linux系统编程--匿名管道

本文详细介绍了Linux系统编程中的匿名管道,包括单工和半双工管道的使用。内容涵盖popen、fread、fwrite、pclose等函数的参数和返回值,pipe创建、write写入、read读取的操作,以及fcntl的使用。还讨论了管道的阻塞、读写状态及文件描述符的复制(dup2)等关键概念。
摘要由CSDN通过智能技术生成

0分类

  • 单工管道
  • 半双工管道

1 单工管道

程序进程与Shell命令行进程单项通信

1.1打开管道FILE* popen (const char *command, const char *open_mode)

1.1.1参数

No. 参数 含义
1 command 命令行字符串
2 open_mode "r"只读"w"只写

1.1.2返回值

No. 返回值 含义
1 NULL 文件描述符
2 非NULL 打开失败
	//系统命令
	FILE* fd = popen("ps -ef","r");
    //FILE* fd = popen("ls -l","r");

1.2读取size_t fread ( void *buffer, size_t size, size_t count, FILE *stream)

1.2.1参数

No. 参数 含义
1 buffer 用于接收数据的内存地址
2 size 读取每个数据项的字节数
3 count 数据项个数
4 stream 输入流

1.2.2返回值

No. 返回值 含义
1 >count 出错
2 正数 真实读取的数据项个数

2.3 写入size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream)

2.3.1参数

No. 参数 含义
1 buffer 写入数据的内存地址
2 size 写入数据项的字节数
3 count 写入数据项的个数
4 stream 目标文件指针

2.3.2返回值

No. 返回值 含义
1 >count 出错
2 正数 真实写入的数据项个数

2.4关闭管道int pclose(FILE *stream);

2.4.1参数

No. 参数 含义
1 stream 文件描述符

2.4.2返回值

No. 返回值 含义
-1 失败
0 成功

2半双工管道

2.1创建管道int pipe(int filedes[2])

2.1.1参数

参数 含义
filedes[0]
filedes[1]

2.1.2返回值

返回值 含义
-1 失败
0 成功
#include<stdio.h>
#include<stdlib.h>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值