pipe

优质
小牛编辑
130浏览
2023-12-01

pipe(建立管道)
相关函数 mkfifo,popen,read,write,fork
表头文件 #include<unistd.h>
定义函数 int pipe(int filedes[2]);
函数说明 pipe()会建立管道,并将文件描述词由参数filedes数组返回。
filedes[0]为管道里的读取端,filedes[1]则为管道的写入端。
返回值 若成功则返回零,否则返回-1,错误原因存于errno中。
错误代码 EMFILE 进程已用完文件描述词最大量。
ENFILE 系统已无文件描述词可用。
EFAULT 参数filedes数组地址不合法。
范例:
/* 父进程借管道将字符串“hello!\n”传给子进程并显示*/
#include <unistd.h>
main()
{
int filedes[2];
char buffer[80];
pipe(filedes);
if(fork()>0){
/* 父进程*/
char s[ ] = “hello!\n”;
write(filedes[1],s,sizeof(s));
}
else{
/*子进程*/
read(filedes[0],buffer,80);
printf(“%s”,buffer);
}
}
执行 hello!