Я использую x86_64 GNU/Linux с gcc.
СИНТАКСИС раздел man -s2 open
говорит:open() требования к файлу заголовка системного вызова
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
int creat(const char *pathname, mode_t mode);
Теперь, когда я пытаюсь скомпилировать следующий фрагмент кода, gcc
не бросает предупреждение/ошибка.
#include <stdio.h>
#include <fcntl.h>
int main(int argc, char **argv)
{
int fd;
fd = open("foo.txt", O_RDWR, 0777);
if(fd == -1)
perror("open");
fd = creat("foo.txt", 0777);
if(fd == -1)
perror("creat");
close(fd);
return 0;
}
types.h
Так это и stat.h
необязательно? Какую цель они служат в manpage open()
?
Check 'fcntl.h' - Я предполагаю, что он включает' types.h' и 'stat.h' – user590028
Он включает' 'и' '. Но я до сих пор не понимаю, почему '' и '' находятся в 'man -s2 open'. –
rootkea
С тех пор как вы не указали, вы скомпилировались с '-Wall'? Если нет, сделайте это и проверьте для предупреждений. – DoxyLover