功能简述:一个程序运行时创建了一个子进程,子进程负责将键盘输入的内容写到pipe,父进程完成将从pipe中读到的内容输出到屏幕。当输入quit时,父子进程都退出。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <strings.h>
#include <string.h>
#define N 64
int main()
{
int fd[2], i;
pid_t pid;
char buf[N] = {0};
ssize_t n;
if (pipe(fd) == -1)
{ perror("pipe");
exit(-1);
}
if ((pid = fork()) == -1)
{
perror("fork");
exit(-1);
}
if (pid == 0) //child write
{
close(fd[0]);
while (fgets(buf, N, stdin) != NULL)//abc\n----a b c \n \0
{
write(fd[1], buf, strlen(buf)+1);
if(strncmp(buf, "quit", 4) == 0)
{
break;
}
}
close(fd[1]);
}
else//parent read
{
close(fd[1]);
while (1)
{
bzero(buf, sizeof(buf));
sleep(1);
n = read(fd[0], buf, N);
printf("n=%d ,buf=%s", n, buf);
if(strncmp(buf, "quit", 4) == 0)
{
break;
}
}
close(fd[0]);
}
return 0;
}