main()
{ int k,p1;
while((p1=fork())==-1);
//创建子进程
if(p1>0)
//父进程返回
{ for(k=1;k<4;k++) //显示3行信息
{ printf("How are you !\n");
sleep(1);
}
kill(p1,12); //发软中断信号给子进程
10
[例] 父子进程同步要求如下: 父进程创建一个子进程,在父进程中显示3行"How are you ! "然后发软中断信号给子进程,再等待子 进程终止后输出结束信息"OK!",然后终止执行。 子进程中循环显示"I'm child" ,当接收到父进程发 来的软信号后停止循环,显示"Child exited! "并终 止执行。
1
2
Linux进程低级通信
Linux提供了同步、互斥及软中断的系统调用/库函数:
lockf(fd,function,size) 可用于互斥 fcntl 文件控制函数(根据文件描述词来操作文件的特性)。 wait() 用于父子进程间的同步 sleep(n) 使当前进程睡眠n秒后自动唤醒自己 kill(pid,sig)传递软中断信号 signal(sig,func)接收软中断信号
演讲人:XXXXXX 时 间:XX年XX月XX日
4
发送软中断信号函数
int kill ( pid , sig )
pid——表示一个或一组进程的标识符: 当pid>0时,将信号发送给指定pid的进程; 当pid=0时,将信号发送给同组的所有进程; 当pid=-1时,将信号发送给以下所有满足条件的进程:该进 程用户标识符等于发送进程有效用户标识符; sig——软中断信号的序号或名称