进程的创建fork()
#include<stdio.h>
main()
{
int p1,p2;
if(p1=fork()) /*子进程创建成功*/
putchar('b');
else
{
if(p2=fork()) /*子进程创建成功*/
putchar('c');
else putchar('a'); /*父进程执行*/
}
}
进程的控制 未加锁lockf()
#include<stdio.h>
main()
{
int p1,p2,i;
if(p1=fork())
{
for(i=0;i<500;i++)
printf("parent%d\n",i);
wait(0); /* 保证在子进程终止前,父进程不会终止*/
exit(0);
}
else
{
if(p2=fork())
{
for(i=0;i<500;i++)
printf("son %d\n",i);
wait(0); /* 保证在子进程终止前,父进程不会终止*/
exit(0); /*向父进程信号0且该进程推出*/
}
else
{
for(i=0;i<500;i++)
printf(“grandchild %d\n",i);
exit(0);
}
}
}
进程的控制 加锁lockf()
#include<stdio.h>
main()
{
int p1,p2,i;
if(p1=fork())
{
lockf(1,1,0);
for(i=0;i<500;i++)
printf("parent %d\n",i);
lockf(1,0,0);
wait(0); /* 保证在子进程终止前,父进程不会终止*/
exit(0);
}
else
{
if(p2=fork())
{
lockf(1,1,0);
for(i=0;i<500;i++)
printf("son %d\n",i);
lockf(1,0,0);
wait(0); /* 保证在子进程终止前,父进程不会终止*/
exit(0);
}
else
{
lockf(1,1,0);
for(i=0;i<500;i++)
printf("daughter %d\n",i);
lockf(1,0,0);
exit(0);
}
}
}