[英]sending signals between father and child is not working
考慮以下程序,流程父親創建流程孩子,流程父親在屏幕上打印“ A”和“ B”,孩子在屏幕上寫下“ C”和“ D”。 問題是我只希望程序以'ACBD'結果出現這是代碼:
void main () {
int pid;
signal(SIGUSR1,SIG_IGN);
if (pid=fork()) {
printf("A");
kill(pid,SIGUSR1);
pause();
printf("B");
}
else {
pause();
printf("C");
kill(getppid(),SIGUSR1);
printf("D");
}
}
但是它的輸出沒什么! 任何幫助,將不勝感激 !
父母有可能在“孩子”還沒有活着時嘗試發送信號。 在父代碼中調用kill之前,請添加sleep(1)。 但是,這不是一個很好的解決方案...此外,您應該添加信號處理函數(甚至是一個空的)。 您還應該注意,輸出已緩沖-這意味着它不會立即推送到終端,您可以通過添加“ \\ n”或調用fflush(stdout)來強制推送。
#include <stdio.h>
#include <signal.h>
void main () {
int pid;
void signal_handler(int test) {}
signal(SIGUSR1, signal_handler);
if (pid=fork()) {
printf("A");
fflush(stdout);
sleep(1);
kill(pid,SIGUSR1);
pause();
printf("B");
fflush(stdout);
}
else {
pause();
printf("C");
fflush(stdout);
kill(getppid(),SIGUSR1);
printf("D");
fflush(stdout);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.