写一个程序,实现命令行管道符的实现:示例:ps -ef | grep ssh
此程序用到IPC中的管道,进程控制里的创建子程序和程序替换知识,和一些基础IO知识,比如重定向等,较为简单。以下是我写的代码:
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/wait.h>
int main()
{
int pipefd[2]={-1};
if(pipe(pipefd) < 0){
perror("pipe error");
return -1;
}
pid_t ps_pid=fork();
if(ps_pid==0){
dup2(pipefd[1],1);
execlp("ps","ps","-ef",NULL);
exit(0);
}
pid_t grep_pid=fork();
if(grep_pid==0){
close(pipefd[1]);
dup2(pipefd[0],0);
execlp("grep","grep","ssh",NULL);
exit(0);
}
close(pipefd[0]);
close(pipefd[1]);
waitpid(ps_pid,NULL,0);
waitpid(grep_pid,NULL,0);
return 0;
}