在模拟读写器问题的 C 程序中,我创建了多个子进程,每个子进程在xterm窗口fork()
中调用execlp()
并运行另一个程序(读取器或写入器) 。
当我结束时main()
,那些在 xterm 中运行的孩子还活着。我如何也终止它们?
下面的代码示例 -
main() {
while(1) {
scanf(choice);
switch(choice) {
case 1:
reader()
break;
case 2:
writer();
break;
default:
kill(getpgid(getpid()), SIGTERM); // killing the group id
return 0;
}
}
reader() {
/*
some semaphore manipulation
*/
execlp("xterm", "xterm", "-e", "./read", NULL);
/*
some semaphore manipulation
*/
return 0;
}
writer() {
/*
some semaphore manipulation
*/
execlp("xterm", "xterm", "-e", "./write", NULL);
/*
some semaphore manipulation
*/
return 0;
}