Проблема XY спрашивает о вашей попытке решения, а не о реальной проблеме: Проблема XY .
Если мы откроем файл с
f, err := os.OpenFile(path, syscall.O_RDONLY, 0444)
ваша программа работает без ошибок.
В Windows программа использует CreateFile с
DesiredAccess = GENERIC_READ
ShareMode = FILE_SHARE_READ | FILE_SHARE_WRITE
По какой-то неизвестной причине вы используете произвольный os.OpenFile
flag
битовый разбой в Windows.
f, err := os.OpenFile(path, syscall.O_RDONLY|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_READ, 0444)
, где
const (
O_RDONLY = 0x00000
O_WRONLY = 0x00001
O_RDWR = 0x00002
FILE_SHARE_READ = 0x00000001
FILE_SHARE_WRITE = 0x00000002
)
Разбивая биты режима os.OpenFile
flag
несвязанными битами общего доступа к файлам, вы получаете
flag = syscall.O_RDONLY|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_READ
или
flag = O_RDONLY|O_WRONLY|O_RDWR
Результаты не определены.
В Windows сообщается об ошибке: read test.file: Access is denied.
.
В Linux обнаружена ошибка: read test.file: bad file descriptor
.