您的位置:首页 > 编程语言 > C语言/C++

无名管道pipe使用方法

2017-06-12 20:10 309 查看
有名管道pipe函数:int pipe(int filedes[2]); 

下面程序通过创建进程,父进程写入数据,子进程读取数据,从管道中读取数据。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>

int main()
{
int fd[2] = {0};
int ret = pipe(fd);

if (-1 == ret)
{
perror("pipe");
exit(1);
}

pid_t pid = fork();

if (-1 == pid)
{
perror("fork");
exit(2);
}

if (0 == pid)
{
//read
char buffer[32] = {0};
while (1)
{
close(fd[1]);//子进程读数据,关闭写入端
if (-1 == read(fd[0], buffer, 32))
{
perror("read");
exit(3);
}

if (strcmp("exit", buffer) == 0)
{
close(fd[0]);
exit(0);
}
}
}
else
{
//write
char buffer[32] = {0};
while (1)
{
close(fd[0]);//父进程写数据,关闭读取端
scanf("%s", &buffer);
if (-1 == write(fd[1], buffer, strlen(buffer)))
{
perror("write");
exit(4);
}

if (strcmp("exit", buffer) == 0)
{
close(fd[1]);
exit(0);
}
printf("recv : %s\n", buffer);
memset(buffer, 0, 32);
}
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言