lockf() Çë½Ì
[font=ËÎÌå]ÏÂÃæµÄÕâ¸ö³ÌÐò¼ÓËøºÍ²»¼ÓËøÊä³öµÄ½á¹ûÓÐÇø±ð°É£¿¡¡ÎÒÊÔ¹ýÁË¡¡ÊǵÄÇø±ðµÄµ«ÊÇÓеÄÈË˵£º¡°[font=ËÎÌå][color=black][font=ËÎÌå]²»Í¬½ø³ÌÖ®¼ä²»´æÔÚ¹²ÏíÁÙ½ç×ÊÔ´[/font][/color][color=black][font=Times New Roman]([/font][/color][color=black][font=ËÎÌå]ÆäÖдòÓ¡»úµÄ»¥³âÐÔÒÑÓɲÙ×÷ϵͳ±£Ö¤[/font][/color][color=black][font=Times New Roman])[/font][/color][color=black][font=ËÎÌå]ÎÊÌâ[/font][/color][color=black][font=Times New Roman],[/font][/color][color=black][font=ËÎÌå]ËùÒÔ¼ÓËøÓë²»¼ÓËøÐ§¹ûÏàͬ¡£¡±¡¡Õâ¸ö¶ÔÂð[/font][/color][/font]4SH$Ek}&NGB-o#P^[/font]
[font=ËÎÌå]#include<stdio.h>
#include<unistd.h>
main( )0U#M_5VR2f!~J"m
{ `9f-\[8L.?P
int p1,p2,i,j;c?`)o!](v[#F8K-V
while((p1=fork( ))==-1); /*´´½¨×Ó½ø³Ìp1*/
if (p1==0)
{:z?hua/lU"_0w$p)e
lockf(1,1,0); /*¼ÓËø,ÕâÀïµÚÒ»¸ö²ÎÊýΪstdout(±ê×¼Êä³öÉ豸µÄÃèÊö·û)*/QSxTw9U0C
for(i=0;i<1000;i++)mUg3L(sR FQp
for(j=0;j<1000000;j++)Y#v'\4w$th.A-|
if(j==0)
printf("daughter daughter daughter daughter daughter daughter daughter %d\n",i);
lockf(1,0,0); /*½âËø*/
}
else {0z \ lJO%f;`
while((p2=fork( ))==-1); /*´´½¨×Ó½ø³Ìp2*/*g)X,Z1L|Y^S9r\
if (p2==0)
{hS2` Lev {!j+S_
lockf(1,1,0); /*¼ÓËø*/
for(i=0;i<1000;i++)
for(j=0;j<1000000;j++){#vm0cj
if(j==0)
printf("son son son son son son son son son son son son son son %d\n",i);
lockf(1,0,0); /*½âËø*/
}8t"{)wpfz
else/^NmY%c }"U)_
{m Sqx3y
lockf(1,1,0); /*¼ÓËø*/
for(i=0;i<1000;i++)
for(j=0;j<1000000;j++)
if(j==0)t/P{w7y(oY)XC
printf("parent parent parent parent parent parent parent parent parent %d\n",i);+B3f"qr~BJ*q
lockf(1,0,0); /*½âËø*/({M%^MO4T
}