- 论坛徽章:
- 1
|
我在当前目录下有一个文本文件叫做tmp,我想cat这个文件,然后sort它。我采用一个c程序来模拟管道,用父子进程协作来做这件事情。
但是cat执行完之后,程序卡住了,不再往下走了。帮我看下为什么吧,怎么改
- #include<stdlib.h>
- #include<stdio.h>
- #include<unistd.h>
- int main(){
- int pipefd[2];
- pipe(pipefd);
- int& readfd=pipefd[0];
- int& writefd=pipefd[1];
- pid_t pid=fork();
- if(pid==0){//子进程
- dup2(STDIN_FILENO,writefd);
- close(readfd);
- execlp("cat","cat","tmp",NULL);
- printf("子进程cat退出\n");
- exit(0);
- }else{//父进程
- dup2(STDOUT_FILENO,readfd);
- close(writefd);
- execlp("sort","sort",NULL);
- printf("父进程sort退出\n");
- }
- int status;
- wait(&status);
- printf("父进程结束\n");
- return 0;
- }
复制代码
程序在打印了tmp这个文件的之后就卡住了,不往下走了。如何解决呢?
|
|