在管道中执行带有多个字符串的命令

时间:2018-04-16 14:33:49

标签: c pipe dup2

我继续使用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);
    }

}

感谢您的时间。

0 个答案:

没有答案