У меня возникла проблема, когда я хочу читать из файла, используя функцию чтения, но я не могу. Мой код делает это. У меня есть родительский процесс и дочерний процесс. Ребенок выполняет команду exe c, и я перенаправил стандартный вывод в файл f. Родитель ожидает дочернего элемента и после этого считывает содержимое файла и сохраняет его в буфере. Затем я отправляю этот вывод клиенту через сокет, используя send, но это не проблема. Проблема в том, что, хотя txt имеет содержимое внутри команды exe c, функция чтения ничего не читает, и из моего тестирования она всегда читает 0 байтов.
//parent
if (wait(&status2)== -1){ // Wait for child
perror("wait");
}
check_child_exit(status2);
n = read(f, buffer, MAX_BUFF-1);
if (n < 0){
error("ERROR reading from File");
}
printf("\n%d\n",n);
n = send(newsockfd,buffer, MAX_BUFF-1,0);
if (n < 0){
perror("ERROR writing to socket");
break;
}
//child
dup2(f,1);
dup2(f,2);
.
.
.
execvp(words[0],words); // Execute date
perror("execvp");
exit(EXIT_FAILURE)
Итак, как вы можете видеть это 2 процесса. Я слышал из другой статьи, что проблема может быть в открытии файла. Но я не уверен, какие варианты использовать или нет. Я даже пытался открыть с помощью функции open и fopen, просто чтобы попробовать что-то новое. Вот открытые и открытые звонки:
f = open("temp133",O_RDWR|O_CREAT|O_TRUNC,0755);
if (f==-1){
error_exit("Error Exit");
}
FILE *fd=fopen("tmp","w+");
заранее спасибо