Tôi đang sử dụng GNU/Linux x86_64 với gcc.
phần SYNOPSIS của man -s2 open
nói:mở() yêu cầu tập tin tiêu đề cuộc gọi hệ thống
#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);
Bây giờ khi tôi cố gắng biên dịch đoạn mã sau, gcc
không ném một cảnh báo/lỗi.
#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;
}
Vì vậy, types.h
và stat.h
tùy chọn? Họ phục vụ mục đích gì trong manpage của open()
?
Kiểm tra 'fcntl.h' - Tôi giả sử nó bao gồm' types.h' và 'stat.h' – user590028
Nó bao gồm' 'và' '. Nhưng tôi vẫn không hiểu tại sao ' 'và' 'có trong' man -s2 open'. –
rootkea
Vì bạn không nói, bạn đã biên dịch với '-Wall' chưa? Nếu không, hãy làm như vậy và kiểm tra để cảnh báo. – DoxyLover