世界知名中国10大品牌:那位高手能帮忙做一个小作业题,在此谢了!

来源:百度文库 编辑:中科新闻网 时间:2024/05/04 05:44:55
例子:
编制一段程序,使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按Del键),当捕捉到中断信号后,父进程用系统调用kill()向两个子进程发出信号,子进程捕捉到信号后,分别输出下列信息后终止:
child process 1 is killed by parent!
child process 2 is killed by parent!
父进程等待两个子进程终止后,输出以下信息后终止:
parent process is killed !
#include<stdio.h>
#include<signal.h>
#include<unistd.h>
void waiting();
void stop();
int wait_mark;
main()
{
int p1, p2;
while ((p1 = = fork()) = = -1);
if (p1>0)
{
while ((p2 = = fork()) = = -1);
if (p2>0)
{
wait_mark=1;
signal(SIGINT, stop);
waiting(0);
kill(p1,16); //*send signal 16 to end the process p1
kill(p2,17); //*send signal 17 to end the process p2
wait(0); //*waiting for the ending of p1
wait(0); //*waiting for the ending of p2
printf("parent process is killed!\n");
exit(0); //*quit from the parent process
}
else //*p2 work
{ wait_mark=1;
signal(17, stop);
waiting();
lockf(1,1,0);
printf("child process 2 is killed by parent!\n");
lockf(1,0,0);
exit(0); //* p2 quit
}
}
else //*p1 work
{ wait_mark=1;
signal(16, stop);
waiting();
lockf(1,1,0);
printf("child process 1 is killed by parent!\n");
lockf(1,0,0);
exit(0); //* p1 quit
}
}
void waiting( )
{
while (wait_mark! = 0);
}
void stop()
{
wait_mark=0;
}
lockf( ) 用作锁定文件的某些段或整个文件。
作业如下:
由父进程创建两个子进程,通过终端输入Crtl+\组合键向父进程发送SIGQUIT软中断信号或由系统时钟产生SIGALRM软中断信号发送给父进程;父进程接受到这两个软中断的其中某一个后,向其两个子进程分别发送整数值为16和17软中断信号,子进程获得对应软中断信号后,终止运行;父进程调用wait()函数等待两个子进程终止,然后自我终止。
程序尽量详细一点 。

父进程是调用函数的进程。父进程所创建的进程叫子进程。每个进程都有一个不重复的进程ID号。或称pid,它对进程进行标识。子进程与父进程完全相同,子进程从父进程继承了多个值的拷贝,如全局变量和环境变量。两个进程的唯一区别是fork的返回值。子进程接收返回值0,而父进程接收子进程的pid作为返回值。(PID, process identifier --- 进程标识符)
想要了解更多,去学门编程语言.

小题?!

gun