В программе C, имитирующей проблему чтения-записи, я создал несколько дочерних процессов, используя fork()
, и каждый дочерний процесс, названный execlp()
, и запустил другую программу (читатель или писатель) в окне xterm.
Когда я заканчиваю 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;
}