我继续使用fork()创建一个子进程,以便父进程使用write命令以“Line i”(1< = i< = x)的形式发送给子进程,x个连续的字符串。然后,孩子应该继续在每一行执行“more”命令。但是,执行时子项仅显示第一行(“第1行”)。我是否有必要用“写”一次性发送整个字符串?
int main(){
pid_t pid;
char buf[30];
int fd[2],i,max;
scanf("%d",&max);
if(pipe(fd)<0) printf("Error creating pipe\n");
if((pid=fork())<0) printf("Error forking\n");
else if(pid==0){
close(fd[1]);
dup2(fd[0],STDIN_FILENO);
close(fd[0]);
if(execlp("more","more",NULL)<0) printf("Error executing.\n");
}
else{
close(fd[0]);
for(i=1;i<=max;i++){
sprintf(buf, "Line %d\n", i);
write(fd[1],buf,30);
}
close(fd[1]);
wait(NULL);
}
}
感谢您的时间。