0

重要な事前知識:私には、元のプロセスによってフォークされた 2 人の子供がいます。子は、2 つのユーザー定義シグナル (SIGUSR1 または SIGUSR2) のいずれかを親に送信するだけです。

コードは次のように構成されます。

if (pid == 0 || second_child == 0) {
    /* Just some pseudocode for basic logic */
    while (1) {
        sleep(2);
        kill(parent_pid, SIGUSR1) or kill(parent_pid, SIGUSR2);
    }
} else {
    while (1) {
        struct sigaction psa;
        psa.sa_handler = sigHandler;
        /* three signals that need to be handled */
        sigaction(SIGUSR1, &psa, NULL);
        sigaction(SIGUSR2, &psa, NULL);
        sigaction(SIGINT, &psa, NULL);
        pause();
    }
}

sigHandler メソッド:

void sigHandler (int sigNum) {
    switch(sigNum) {
        case SIGUSR1:
            //print something using write()
            break;
        case SIGUSR2:
            //print something using write()
            break;
        default:
            exit(0);
    }
}

sigHandler() の呼び出しが正常に行われません。sigHandler() で発生する print ステートメントは最終的に停止するだけで、出力はありません。問題は、sigHandler の実行中に親に送信されるシグナルに関係していると思いますが、確かではありません。

4

0 に答える 0