linux中管道通信实验

本文介绍了Linux内核中的fork函数用于创建进程,并详细解释了其返回值的含义。同时,文章探讨了lockf函数在进程同步中的作用,将其比喻为PV操作,用于对共享资源的访问进行控制。通过示例展示了如何使用lockf进行文件锁定和解锁。文中还提到了一个错误处理策略,即在进程创建失败时,通过循环确保进程最终能成功创建。

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

在linux内核中,fork函数用于创建进程
系统调用格式:
pid=fork()
fork()返回值的意义:
0 在子进程中,pid变量保存的fork()返回值为0,表示当前进程是子进程。
当大于0 在父进程中,pid变量保存的fork()返回值为子进程的id值(进程唯一标识符)
-1 创建失败

lockf函数用于对进程进行上锁和解锁,这就相当于PV操作,对共有资源进行限制。
参数定义
int lockf(files,function,size)
int files,function;
long size;
其中files是文件描述符,function是锁定和解锁,1表示锁定,0表示解锁,size是锁定或解锁的字节数,若用0,表示从文件的当前位置到文件尾。

while((pid1=fork()==-1);
这句话的意思是当进程创建失败的时候,我们知道fork()返回值为-1代表创建失败,我们继续进行创建,直到进程创建成功。

lockf(fd[1],1,0)
这句话就意味着在向fd[1]这个位置输入字符前对它进行锁定
与此相对应的
lockf(fd[1],0,0)
这句话意味着解锁。

#include<unistd.h>
#include<signal.h>
#include<stdio.h>
int pid1,pid2;

main()
{
   
        int fd[2];
        char buf_out[100],buf_in[100];
        pipe</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值