Итак, я сейчас работаю на стороне сервера моей программы и хочу сделать следующее:
1) открыть файл в режиме чтения / записи
2) добавить слово (WORD) в конец файла
3) [Я полагаю, у меня уже есть вся эта часть] открыть канал, создать дочерний процесс, прочитать его непосредственно из файла (дескриптор файла), выполнить команду и отправить результат в запись / выход трубы. Родительский процесс считывает данные из канала чтения / ввода и помещает информацию в буфер для отправки обратно клиенту.
У меня проблемы с добавлением. Я почти уверен, что он добавляется в файл (с новой строкой между существующим текстом и моим WORD), потому что когда я непосредственно открываю текстовый файл, он там. Но когда я пытаюсь распечатать его из буфера, его там нет. Я попытался закрыть дескриптор файла после записи и повторного открытия, и его там нет. Я попробовал strcat вместо записи в дескриптор файла, и его там нет.
#define WORD "WORD"
#define BUFFERLENGTH 512
char buffer[BUFFERLENGTH];
int fileDesc = open (filePath, O_RDWR|O_APPEND, 0660);
if (fileDesc <= 0){
write(clientDesc, ERRORMSG, BUFFERLENGTH);
exit(EXIT_FAILURE);
}
read(fileDesc,buffer,BUFFERLENGTH);
long length = lseek(fileDesc,0,SEEK_END);
int status = write(fileDesc,WORD,sizeof(WORD)-1);
read(fileDesc, buffer, BUFFER_LEN+1);
printf("new text: %s\n", buffer); //WORD does not show up at the end of file as intended
Есть ли что-то, что я действительно неправильно понимаю?
Возможно, я не до конца понимаю, как работают open (), read (), write () и lseek (), но если бы кто-нибудь мог помочь мне объяснить, почему это не работает так, как задумано, это было бы значительно оценили. Я боролся с этим на прошлой неделе, и количество вкладок, открытых для поиска решения, трагично.