簡體   English   中英

暫停時向子進程發送信號

[英]Sending signal to child process on pause

我的目標是在創建子進程后暫停子進程。 然后我想中斷暫停,並通過從父進程通過kill()發送的信號來完成。 主要問題是在這種情況下我應該把pause()放在哪里。

這是我到目前為止所得到的:

int main()
{
    int pid;

    if ((pid = fork()) < 0) //error occured
    {
        perror("fork");
        exit(1);
    }

    if (pid == 0) //___Child___
    {
        signal(SIGHUP, sighup);
        printf("Tryna work with pause():\n");
        printf("Before pause:\n");
        pause();
        printf("After pause.\n");

        for(;;) //infinite loop
            ;
    }

    else //___Parent___
    { /* pid hold id of child */
        printf("\nPID=%d\n\n",pid);
        printf("\nPARENT: sending SIGHUP\n\n");
        kill(pid, SIGHUP);

        sleep(3); //wait 3 secs
    }
}

void sighup()
{
    signal(SIGHUP, sighup) //reset signal;
    printf("In handler...");
}

在 Linux 終端中調用它,如main 5053和 output 是:

PID=1939

PARENT: sending SIGHUP

唯一需要改變的是在sleep后移動kill給子進程運行時間。

{
    ...
    printf("\nPARENT: sending SIGHUP\n\n");
    kill(pid, SIGHUP);

    sleep(3); //wait 3 secs
    ...
}

暫無
暫無

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

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