Код: Выделить всё
bad file descriptorКод: Выделить всё
write /tmp/test-file: copy_file_range: bad file descriptor
Однако, если я прокомментирую две строки, которые открывают файл descriptor 0 (stdin), ошибка исчезает.
Код: Выделить всё
const (
_numLevels = 5
_countersPerLevel = 4096
)
type counter struct {
resetAt atomic.Int64
counter atomic.Uint64
}
type counters [_numLevels][_countersPerLevel]counter
func newCounters() *counters {
return &counters{}
}
func Test(t *testing.T) {
for n := range 50 {
t.Run(strconv.Itoa(n), func(t *testing.T) {
// If I comment out these two lines, the error disappears
outFile := os.NewFile(0, "some-file")
require.NotNil(t, outFile)
newCounters()
require.NoError(t, copyFiles(t))
})
}
}
func copyFiles(t *testing.T) error {
content, err := os.Open("video.webm")
require.NoError(t, err)
defer func() {
require.NoError(t, content.Close())
}()
out := os.TempDir() + "/test-file"
f, err := os.Create(out)
require.NoError(t, err)
defer func() {
require.NoError(t, f.Close())
}()
_, err = io.Copy(f, content)
require.NoError(t, err)
require.NoError(t, f.Sync())
return nil
}
- Когда os.newfile (0, "come-file") называется последующими операциями файлов (например, io.copy ) сбое с плохими декорациями .
- , если я удаляю эти две линии, все работает. /> < /ul>
Что я не понимаю < /h3>
Почему открывается stdin () Влиять на неродственные операции с файлами позже? LinuxКод: Выделить всё
fd=0
Подробнее здесь: https://stackoverflow.com/questions/796 ... 0-in-tests