無名管道是Linux系統核心的特殊檔案,用於父子進程之間的通信。
基本介紹
- 中文名:無名管道
- 所屬類型:Linux系統核心
- 注意事項:不能在與windows共享的資料夾中創建
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "unistd.h" //包含 pipe() 和 fork() 函式
#include "sys/types.h" //提供pid_t的定義
int main()
{
int ret;
int fd[2] = {0};
char read_buf[32] = {0},write_buf[32] = {0};
pid_t pid;
ret = pipe(fd);
if(ret == -1)
{
printf("create unnamed pipe error\n");
return -1;
}
pid = fork();
if(pid == 0) //子進程
{
while(1)
{
printf("please input a word.\n");
scanf("%s",write_buf);
write(fd[1],write_buf);
if(strcmp(write_buf,"qiut") == 0)
{
break;
}
memset(write_buf,0,32);
}
}
if(pid > 0) //父進程
{
while(1)
{
read(fd[0],read_buf);
if(strcmp(read_buf,"qiut") == 0)
{
break;
}
printf("recv: read_buf = %s\n",read_buf);
memset(write_buf,0,32);
}
}
return 0;
}

