1.pipe匿名管道实现进程间通信
pipe实现进程间通信
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
int main()
{
//创建两个文件描述符
int fd[2];
//用文件描述符创建管道
int ret=pipe(fd);
//创建子进程
pid_t pid=fork();
//如果是子进程 执行ps aux函数,使用execlp实现进程函数替换
if(pid==0) {
//实现标准输入输出重定向,dup2函数实现fd[1]对应管道的写端
dup2(fd[1],1);
//为了数据安全,在给管道写入数据时最好关闭管道的读端
close(fd[0]);
//execlp函数替换程序
execlp("ps","ps","aux",NULL);
}
//如果是父进程,执行 grep | pipe操作 其他操作与子进程基本一致
else if(pid>0) {
dup2(fd[0],0);
close(fd[1]);
execlp("grep","grep","pipe","--color=auto",NULL);
}
return 0;
}
2.fifo有名管道进行进程间通信
FIFO通信写端代码实现
#include <stdio.h></