lockf函数的使用

本文通过C语言实现并发编程实验,包括创建子进程、锁定标准输出设备描述符及输出不同角色的信息,深入探讨了进程间通信的机制。

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

#include<stdio.h>
#include<unistd.h>
void main()
{int p1,p2,i;
 while((p1=fork())==-1);//创建子进程p1,这个是一个技巧,直到创建子进程成功为止
  if(p1==0)
   {
    lockf(1,1,0);//加锁第一个参数为stdout(标准输出设备描述符)
     //printf("child  %4d %4d\n",getppid(),getpid(),p1);
     for(i=0;i<5;i++)
       printf("daughter%d\n",i);
     lockf(1,0,0); }
  else{
    while((p2=fork())==-1);//创建子进程p2
     if(p2==0){
        lockf(1,1,0);//加锁第一个参数为stdout(标准输出设备描述符)
        for(i=0;i<5;i++)
         printf("son%d\n",i);
        lockf(1,0,0); //解锁
        }
      else
      {lockf(1,1,0);//加锁
        for(i=0;i<5;i++)
         printf("parent%d\n",i);
        lockf(1,0,0); //解锁
        
      }
    }
     
}
/*本实验所涉及的的系统调用lockf(files,function,size),
用作锁定文件的某些段或者整个文件。本函数的头文件为include<unistd.h>
其中file为文件描述符,function是锁定和解锁:1表示锁定,0表示解锁;
size是锁定或者解锁的字节数,为0,表示从文件的当前位置到文件尾。*/

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值