Системный вызов для записи и чтения из файла

Я хочу проверить системный вызов read а также write

#include <unistd.h>
#include <fcntl.h>

int main(void)
{
    fd = open("/Users/me/Desktop/PubRepo/C/APUE/3.File_IO/test", O_RDWR);
    write(fd, "Test the first line",20);
}

Копия сообщает:

In [29]: !cc write_test.c                                                                                         
write_test.c:6:5: error: use of undeclared identifier 'fd'
    fd = open("/Users/me/Desktop/PubRepo/C/APUE/3.File_IO/test", O_RDWR);
    ^
write_test.c:7:11: error: use of undeclared identifier 'fd'
    write(fd, "Test the first line",20)
          ^
2 errors generated.

У меня есть некоторые основы Python, но я не знаю, как сделать код.

1 ответ

Решение

Вы должны объявить, какой тип fd является. Что это за тип? Проверьте ссылку open(), который упоминает:

int open (const char * path, int oflag,...);

Вы можете видеть, что тип возвращаемого значения int, В результате переменная, которой должно быть присвоено возвращаемое значение этой функции, также должна быть того же типа.

Так что поменяйте:

fd = open("/Users/me/Desktop/PubRepo/C/APUE/3.File_IO/test", O_RDWR);

к этому:

int fd = open("/Users/me/Desktop/PubRepo/C/APUE/3.File_IO/test", O_RDWR);

PS: если файл не существует, то вам нужно будет сделать:

int fd = open("/Users/me/Desktop/PubRepo/C/APUE/3.File_IO/test", O_RDWR | O_CREAT, 0600);

Подробнее читайте в разделе Использование open() для создания файла в C.

Другие вопросы по тегам