#include <unistd.h> int pipe(int filedes[2]); // 成功返回0,出错返回-1
#include <stdio.h> #include <unistd.h> #define MAXLINE 1024 int main(void) { int n; int fd[2]; pid_t pid; char buf[MAXLINE]; if (pipe(fd) < 0) return -1; if ((pid = fork()) < 0) return -1; else if (pid > 0) { // 父进程 printf("parent ID = %d\n", getpid()); close(fd[0]); write(fd[1], "Hello world\n", 12); } else { // 子进程 printf("child ID = %d\n", getpid()); close(fd[1]); n = read(fd[0], buf, MAXLINE); write(STDOUT_FILENO, buf, n); } return 0; }
#include <stdio.h> FILE *popen(const char *cmdstring, const char *type); // 成功返回文件指针,出错返回NULL int pclose(FILE *fp); // 获得cmdstring的终止状态,出错返回-1
#include <stdio.h> #include <unistd.h> #include <string.h> #define MAXLINE 1024 int main(void) { char buf[MAXLINE]; FILE *fpin; int n; if ((fpin = popen("date", "r")) == NULL) // 启动data命令 return -1; fgets(buf, MAXLINE, fpin); // 获得data命令的输出 write(STDOUT_FILENO, buf, strlen(buf)); // 将数据打印到终端 pclose(fpin); return 0; }
Linux编程 — IPC之管道,布布扣,bubuko.com
原文:http://blog.csdn.net/nestler/article/details/25898077