| 注意 | 当一个管道共享多对文件描述符时,若将其中的一对读写文件描述符都删除,则该管道就失效。 |
| 所需头文件 | #include <unistd.h> |
| 函数原型 | int pipe(int fd[2]) |
| 函数传入值 | fd[2]:管道的两个文件描述符,之后就可以直接操作这两个文件描述符 |
| 函数返回值 | 成功:0 |
| 出错:-1 |
| 想一想 | 为什么无名管道只能在具有亲缘关系的进程之间建立? |
| 所需头文件 | #include <stdio.h> | |
| 函数原型 | FILE *popen(const char *command, const char *type) | |
| 函数传入值 | command:指向的是一个以null结束符结尾的字符串,这个字符串包含一个shell命令,并被送到/bin/sh以-c参数执行,即由shell来执行 | |
| type: | “r”:文件指针连接到command的标准输出,即该命令的结果产生输出 “w”:文件指针连接到command的标准输入,即该命令的结果产生输入 | |
| 函数返回值 | 成功:文件流指针 | |
| 出错:-1 | ||
| 所需头文件 | #include <stdio.h> |
| 函数原型 | int pclose(FILE *stream) |
| 函数传入值 | stream:要关闭的文件流 |
| 函数返回值 | 成功:返回由popen()所执行的进程的退出码 |
| 出错:-1 |
| 小知识 | 用户还可以在命令行使用“mknod 管道名 p”来创建有名管道。 |
| 所需头文件 | #include <sys/types.h> #include <sys/state.h> | |
| 函数原型 | int mkfifo(const char *filename,mode_t mode) | |
| 函数传入值 | filename:要创建的管道 | |
| 函数传入值 | mode: | O_RDONLY:读管道 |
| O_WRONLY:写管道 | ||
| O_RDWR:读写管道 | ||
| O_NONBLOCK:非阻塞 | ||
| 函数传入值 | mode: | O_CREAT:如果该文件不存在,那么就创建一个新的文件,并用第三个参数为其设置权限 |
| O_EXCL:如果使用O_CREAT时文件存在,那么可返回错误消息。这一参数可测试文件是否存在 | ||
| 函数返回值 | 成功:0 | |
| 出错:-1 | ||
| EACCESS | 参数filename所指定的目录路径无可执行的权限 |
| EEXIST | 参数filename所指定的文件已存在 |
| ENAMETOOLONG | 参数filename的路径名称太长 |
| ENOENT | 参数filename包含的目录不存在 |
| ENOSPC | 文件系统的剩余空间不足 |
| ENOTDIR | 参数filename路径中的目录存在但却非真正的目录 |
| EROFS | 参数filename指定的文件存在于只读文件系统内 |
| 欢迎光临 DIY编程器网 (http://diybcq.com/) | Powered by Discuz! X3.2 |