函数原型: int pipe(int filedes[2]) filedes[0]:用来读取数据的管道端口 filedes[1]:用来写入数据的管道端口 写入数据:write(写端口, buffer, sizeof(buffer)) 读取数据:read(读端口, buffer, sizeof(buffer)) fcntl()函数可以将 管道的读取/写入模式改为阻塞,避免数据读取完/数据写满内存后发生错误。 既然是进程间的通信,我们也可能会使用fork()函数,程序代码如下: /** * * 管道通信之无名管道,pipe系统调用 * */#include <sys/types.h>#include <sys/wait.h>#include <unistd.h>#include <string.h>#include <stdio.h>int main(void){int fd[2], child_pid, status;char buf[200], len;if(pipe(fd) == -1){perror("管道创建出错");exit(1);}if((child_pid = fork()) == 0){close(fd[1]);len = read(fd[0], buf, sizeof(buf));if(len == -1){perror("读取错误");exit(1);}buf[len] = 0;printf("读取的数据为:%s/n", buf);exit(0);}else{close(fd[0]);sprintf(buf , "父进程为子进程(%d)创建数据", child_pid);write(fd[1], buf, sizeof(buf));exit(0);}return 0;}