簡體   English   中英

如何從孩子那里接收信號

[英]How to receive the signal from child

編寫一個使用fork()創建子進程的程序。 當父級等待子級進程發出的信號時,子級將打印其父級的名稱,父級ID和自己的ID。 家長在孩子終止后10秒設置警報。

以下代碼未收到來自child的警報信號,也未在警報處理程序(即ding功能)中使用。

我該怎么辦?

using namespace std;

static int alarm_fired = 0;

void ding(int sig)
{

sleep(10);

 cout<<"Alarm\n";


}

int main()
{

int cpid,i,ppid;

int status = 0;

cpid=fork();

switch(cpid)

{

case -1:

        cout<<"error";

break;

case 0:

        cout<<"Child Block"<<endl;

        cout<<"Parent\n"<<"ParentID: "<<getppid()<<"\nChildID: "<<getpid();

        kill(getppid(), SIGALRM);

default:
        cout<<"Parent Waiting"<<endl;

        wait(&status);

        cout<<"Parent Waiting is Finished"<<endl; 

        signal(SIGALRM, ding);        
}
}

您需要在子級發送SIGALARM之前設置父級信號處理程序“ signal(SIGALRM,ding)”。 在您的情況下,可以將“ signal(SIGALRM,ding)”移到fork()上方一行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM