У меня есть этот код. Проблема в том, что SIGSTOP выдает мне ошибку «Invalid Argument». Мне нужно дождаться SIGCONT от parent, прежде чем Child1 и Child2 смогут продолжить, но я не могу этого сделать. Как решить?
Спасибо!
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/errno.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <string.h>
#include <signal.h>
#include <errno.h>
int main(int argc, char** argv) {
int pid1=0;
int pid2=0;
if((pid1=fork())==0) { //Child1
if(signal(SIGSTOP, SIG_DFL)==SIG_ERR) perror("P1: Error SIGSTOP: ");
if(signal(SIGCONT, SIG_DFL)==SIG_ERR) perror("P1: Error SIGCONT: ");
pause();
printf("P1: I can continue.\n");
} else if((pid2=fork())==0) { //Child2
if(signal(SIGSTOP, SIG_DFL)==SIG_ERR) perror("P2: Error SIGSTOP: ");
if(signal(SIGCONT, SIG_DFL)==SIG_ERR) perror("P2: Error SIGCONT: ");
pause();
printf("P2: I can continue.\n");
} else { //Parent
printf("G: PID: %d\n", getpid());
kill(pid1, SIGSTOP);
kill(pid2, SIGSTOP);
//Some work
kill(pid1, SIGCONT);
kill(pid2, SIGCONT);
wait(0); wait(0);
exit(0);
}
}