C从文件读取将始终读取0个字节

问题描述 投票:0回答:1

我有这个问题,我想使用读取功能从文件读取,但是我不能。我的代码做到了。我有一个父进程和一个子进程。孩子执行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+");

预先感谢

c file buffer fopen
1个回答
0
投票

我想我找到了answear。从您的评论中,我以为我没有求助于文件阅读。非常感谢您的回答,如果您有任何想法将孩子的输出直接发送给客户,请说!

© www.soinside.com 2019 - 2024. All rights reserved.