Мне обычно не нравится задавать вопросы "что не так с моим кодом", но это моя последняя надежда.
Я делаю проект, в котором мне нужно записывать файлы, и я 'Я пытаюсь сделать это с помощью системных вызовов (Linux).Поэтому я использую unistd.h
, который обеспечивает функции: int open( char* filename, int flags, int mode )
и int write( int fd, void* ptr, int numbytes )
.Я использую write
все время без проблем, но обычно это происходит со стандартными дескрипторами файлов ошибок out и standard.
Поэтому я использую этот код для открытия файла:
int flags = O_WRONLY;
if( !exists( "testfile2.txt" ) ) {
flags |= O_CREAT;
}
int mode = S_IROTH | S_IWOTH | S_IXOTH;
int filedesc = open( "testfile2.txt", flags, mode );
А затем эту строку для записи в файл:
int written = write(filedesc, "abcdefghijklmnopqrstuvwxyz",
strlen("abcdefghijklmnopqrstuvwxyz" ) );
И, наконец, я закрываю файл с этим:
int closed = close( filedesc );
Проблема в том, что, когда я пытаюсь записать в файлкогда его еще не было, я получаю сообщение «Отказано в разрешении».Когда я открываю его в vi и игнорирую разрешения, файл кажется пустым.Тем не менее, если файл существовал изначально, он записывает в него, и я могу читать его очень хорошо.Кто-нибудь знает, что происходит, или я что-то упускаю?
Заранее спасибо.