#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