write () в sys / uio.h возвращает -1 - PullRequest
0 голосов
/ 28 апреля 2010

я использую Ubuntu Server 9.10 AMD Phenom 2 процессор g ++ (Ubuntu 4.4.1-4ubuntu9) 4.4.1

пытается запустить приложение pftp-shit v 1.11, которое успешно выполняется до тех пор, пока список удаленных файлов не будет сохранен (в .pftp // pftpfxp -).

Следующий код в tcp.cc успешно выполнен:

int outfile_fd = open(name, O_CREAT | O_TRUNC | O_RDWR | O_BINARY)

, который возвращает дескриптор файла int (в моем случае 6) - name - это массив символов, содержащий правильный путь к моему файлу, который я успешно создал. и успешно работает:

fchmod(outfile_fd, S_IRUSR | S_IWUSR);

и

access(name, W_OK)

Проблема возникает при запуске функции (из sys / uio.h)

write(outfile_fd, this->control_buffer, read_length)

, который возвращает -1. -1 возвращается, если ничего не было записано и в противном случае возвращается неотрицательное целое число, равное количеству записанных байтов.

Кто-нибудь знает, как заставить работать функцию записи?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2010

Является ли каталог и файл определенно доступным для записи пользователем, пытающимся выполнить запись? Может быть, попробуйте запустить его в / tmp просто как тест.

0 голосов
/ 28 апреля 2010

При ошибке возвращается -1, и значение errno устанавливается соответствующим образом.

Возможно, errno может дать вам несколько советов о том, что не так.

write(outfile_fd, this->control_buffer, read_length);

Содержит ли read_length правильное количество записываемых байтов?

...