[英]Send signal from parent to specific child from
我有一個有一個父母和兩個孩子的樹進程,我想發送一個信號,只有child2接收它,為child2做一個處理程序,並在處理程序中接收到它時顯示一條消息。
pid_t pid, pid1, pid2;
if((pid=fork())==0)
printf("child1");
else if((pid2=fork())=0)
printf("child2);
signal(SIGUSR1, handler); //EDITED
else
printf("parent");
kill(pid2, SIGUSR1); //EDITED
void handler(int signal)
{
printf("received");
但我不知道如何只為child2發送信號SIGUSR1
假設您的偽代碼的縮進表示嵌套深度,則現在原則上是正確的,但存在時序問題:
sleep(…)
。 我希望這是您實際問題的偽代碼。 在這種情況下,問題在於父母需要等到孩子實際安裝了處理程序。 這可以通過讓父母等到孩子發信號來實現(“告訴我,我已經准備好出發了”)。
在父代碼中有一個標記為bChildUp。 並等待
while (!bChildUp)
{
// do nothing till the child is up.
}
從child2向父進程發送信號。 接收信號的父進程可以將bChildUp = TRUE更改。 父級將退出等待,您的任務可以繼續(但是您可以通過使用siginfo_t獲取發送信號的進程的pid並使用sigaction來注冊信號來檢查信號是否確實來自child2)。
這些問題是由
我建議在啟動后在child2中僅創建一個文件,然后讓父進程等待文件創建完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.