Linux pipe函数
来源:互联网 发布:oppo手机怎么解网络锁 编辑:程序博客网 时间:2024/05/04 10:16
1. 函数说明
pipe(建立管道):
1) 头文件 #include<unistd.h>
2) 定义函数: int pipe(int filedes[2]);
3) 函数说明: pipe()会建立管道,并将文件描述词由参数filedes数组返回。
filedes[0]为管道里的读取端
filedes[1]则为管道的写入端。
4) 返回值: 若成功则返回零,否则返回-1,错误原因存于errno中。
错误代码:
EMFILE 进程已用完文件描述词最大量
ENFILE 系统已无文件描述词可用。
EFAULT 参数 filedes 数组地址不合法。
2. 举例
- #include <unistd.h>
- #include <stdio.h>
- int main( void )
- {
- int filedes[2];
- char buf[80];
- pid_t pid;
- pipe( filedes );
- pid=fork();
- if (pid > 0)
- {
- printf( "This is in the father process,here write a string to the pipe.\n" );
- char s[] = "Hello world , this is write by pipe.\n";
- write( filedes[1], s, sizeof(s) );
- close( filedes[0] );
- close( filedes[1] );
- }
- else if(pid == 0)
- {
- printf( "This is in the child process,here read a string from the pipe.\n" );
- read( filedes[0], buf, sizeof(buf) );
- printf( "%s\n", buf );
- close( filedes[0] );
- close( filedes[1] );
- }
- waitpid( pid, NULL, 0 );
- return 0;
- }
运行结果:
[root@localhost src]# gcc pipe.c
[root@localhost src]# ./a.out
This is in the child process,here read a string from the pipe.
This is in the father process,here write a string to the pipe.
Hello world , this is write by pipe.
当管道中的数据被读取后,管道为空。一个随后的read()调用将默认的被阻塞,等待某些数据写入。
若需要设置为非阻塞,则可做如下设置:
fcntl(filedes[0], F_SETFL, O_NONBLOCK);
fcntl(filedes[1], F_SETFL, O_NONBLOCK);
- Linux pipe函数
- Linux pipe函数
- Linux pipe函数
- Linux pipe 函数
- Linux pipe函数
- Linux pipe函数
- Linux pipe函数
- Linux pipe函数介绍
- Linux pipe函数
- Linux pipe函数
- Linux pipe函数
- Linux pipe函数
- Linux pipe函数
- linux 系统的 pipe 函数
- linux编程之pipe()函数
- linux编程之pipe()函数
- linux编程之pipe()函数
- linux pipe 函数( int pipe(int filedes[2]))
- FPGA时序优化方法
- 文件的加密解密
- Block-layer I/O polling
- Spring AOP的实现
- C语言基础 输入两个整数num1和num2,并根据运算符的不同进行不同的运算。
- Linux pipe函数
- 正则表达式- 将div#demo.demo转化成<div id="demo" class="demo"></div>
- 贪心-百度笔试-裁减网格纸
- UVa 140 - Bandwidth
- HTML&CSS——margin:0 auto居中
- 中文分词词性对照表
- LeetCode:Rotate List
- dirname(__file__)函数 返回网站根目录
- SQL使用case判断