[英]Sending signals between parent and child process in c
我正在嘗試編寫一個在父進程和子進程之間發送信號的程序。 這是我到目前為止:
void parent_sig(int signo){
if(signo == SIGINT){
printf("*** Parent received SIGINT ***\n");
}else if(signo == SIGTSTP){
//first time
signal(SIGUSR1, c_sig_usr);
//second time
printf("*** Parent received SIGTSTP ***\n");
exit(0);
}else if(signo == SIGUSR1){
printf("*** Parent received SIGUSR1 ***\n");
sleep(3);
signal(SIGUSR1, c_sig_usr);
}else{
pause();
}
}
void child_sig(int signo){
if(signo == SIGINT){
printf("*** Child received SIGINT ***\n");
}else if(signo == SIGTSTP){
printf("*** Child received SIGTSTP ***\n");
}else if(signo == SIGUSR1){
printf("*** Child received SIGUSR1 ***\n");
sleep(3);
signal(SIGUSR1, p_sig_usr);
}else{
pause();
}
}
int main(void)
{
pid_t child, parent;
parent = getpid();
struct sigaction p_sig;
p_sig.sa_handler = &parent_sig;
if((child = fork()) < 0) {
perror("**ERROR**: failed to fork process");
exit(EXIT_FAILURE);
}else if (child == 0){
struct sigaction c_sig;
c_sig.sa_handler = &child_sig;
}else{
}
return 0;
}
我想要它
我需要更改/添加哪些代碼才能使其正常工作?
signal()
是用於配置在接收到特定信號時應調用函數的調用。
kill()
是用於向特定進程 ID 發送特定信號的調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.