我有这个问题,我想使用读取功能从文件读取,但是我不能。我的代码做到了。我有一个父进程和一个子进程。孩子执行exec命令,我将标准输出重定向到文件f。父级等待子级,然后从文件中读取其内容并将其存储到缓冲区。然后我通过使用send通过套接字将此输出发送到客户端,但这不是问题。问题是,即使txt包含exec命令中的内容,但read函数也不会读取任何内容,而根据我的测试,它始终读取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)
因此,您可以看到这是两个过程。我从另一篇文章中听到,问题可能出在文件打开上。但是我不确定是否要使用哪些选项。我什至尝试使用open函数和fopen函数打开,只是为了尝试新事物。这是open和fopen调用:
f = open("temp133",O_RDWR|O_CREAT|O_TRUNC,0755);
if (f==-1){
error_exit("Error Exit");
}
FILE *fd=fopen("tmp","w+");
预先感谢
我想我找到了answear。从您的评论中,我以为我没有求助于文件阅读。非常感谢您的回答,如果您有任何想法将孩子的输出直接发送给客户,请说!