吃俺老孙一棒!爆出装备:金色传说之linux的管道函数

本文探讨了Linux进程通信中的管道机制,包括pipe创建无名管道、mkfifo创建命名管道、unlink和remove删除文件的操作,以及popen和pclose在标准流管道中的应用。了解这些基础知识,对于提升Linux系统编程能力至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程通信之管道

pipe创建无名管道

头文件:#include <unistd.h>

pipe()函数创建无名管道

原型:int pipe(int *pipefd)

参数:int pipefd[2]   --->pipefd[0]  代表管道的读端口

                     --->pipefd[1]  代表管道的写端口   

返回值:成功 创建管道0

        失败 返回值-1

功能:创建一个无名管道,通过参数来操作管道的读写端口

补充:使用的时候,一般先进程pipe(),然后再创建fork(),这样的话才能保证操作的是同一个管道

int pipefd[2];

int a;

//pipe函数创建一个管道

a = pipe(pipefd);

if(a == 0)

{

printf("pipe success\r\n");

}

//读阻塞

read(pipefd[0],r_buf,sizeof(r_buf));

//写阻塞

write(pipefd[1],t_buf,sizeof(t_buf));

mkfifo创建命名管道

头文件:

#include <sys/types.h>

#include <sys/stat.h>

#include <unistd.h>

#include <stdio.h>

原型:int mkfifo(const char *pathname,mode_t mode)

参数: const char *pathname  ---->文件的路径名

       mode_t mode    期望创建管道文件的权限

返回值:成功 返回0

        失败 返回-1

功能:创建pathname对应的管道文件,若成功,权限mode

//创建一个命名管道文件

a = mkfifo("./2.fifo",0664);

if(a == 0)

{

printf("mkfifo success\r\n");

}else

{

printf("mkfifo error\r\n");

return -1;

}

unlink删除文件

原型:int unlink(const char *pathname)

参数:const char *pathname  --->表示待删除文件的路径

返回值:成功删除 返回0  

失败 -1

功能:unlink()会删除pathname指定的文件

//删除一个命名管道文件

b = unlink("./2.fifo");

if(b == 0)

{

printf("unlink success\r\n");

}

remove删除文件

原型:int remove(const char *pathname)

      const char *pathname  --->要删除的文件的路径

参数和返回值与unlink()一致,remove函数可以删除文件夹的功能

popen打开标准流管道

//popen---标准流管道

原型: FILE *popen(const char *command, const char *type)

参数: const char *command   --->表示需要在子进程中执行的命令

       const char *type   --->“r” 可以用于返回文件的指针,读取标准的输出设备

                      --->"w" 可以用于返回文件的指针,写入标准的输入设备

返回值:文件指针    --第二个参数决定的

功能:在创建子进程中运行指定的命令,并创建标准管道

FILE *fp;

char buf[100]={0};

//调用一下popen

fp = popen("ls","r");

//fread函数,读取fp里面的内容

fread(buf, 1,sizeof(buf), fp);

printf("buf = %s\r\n",buf);

pclose关闭标准流管道

原型:int pclose(FILE *stream)

参数:文件流指针

返回值:返回子进程结束的状态

功能:关闭管道文件

fclose(fp);

小广告(养家糊口):

1.好好学习,天天向上

2.上期商品:《富豪的赚钱秘籍》仅剩19本,如果需要购买,请关注博主然后私信

3.本次商品:《如何追女孩子》出售100本,先到先得。如果需要购买,请先关注博主,会有优惠,然后私信博主购买

4.下期商品关键字:MACD战法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值