为管道里的读取 端,filedes[1]则为管道的写入端。 返回值 若成功则返回零,否则返回-1,错误原因存于 errno 中。 错误代码 EMFILE 进程已用完文件描述词最大量。 ENFILE 系统已无文件描述词可用。 EFAULT 参数 filedes 数组地址不合法。 范例 /* 父进程借管道将字符串“hello!\n”传给子 进程并显示*/ #include 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! popen(建立管道 I/O) 相关函数 表头文件 定义函数 pipe,mkfifo,pclose,fork,system,fopen #include FILE * popen( const char * command,const char * type); 函数说明 popen()会调用 fork()产生子进程, 然后从子进 程中调用/bin/sh -c 来执行参数 command 的指 令。