4

このプログラムは子プロセスを作成し、子プロセスはALARMシグナルを待機します。このシグナルが3秒後に到着すると、f関数は親プロセスIDを取得し、SIGINTシグナルを送信してそれを強制終了するため、子プロセスは強制終了します。 3秒後の親

#include <stdio.h>
    #include <unistd.h>
    #include <signal.h>
    #include <string.h>

    void f(int sig)
    {
        kill(getppid(),SIGINT);
    }

    main()
    {
        int f=fork();
        if(f==0)
        {
            signal(SIGALRM,f);
            alarm(3);
        }
        else
        {
            pause();
        }
    }

このエラーが発生しました:

test13.c: In function ‘main’:
test13.c:16:3: warning: passing argument 2 of ‘signal’ makes pointer from integer without a cast
/usr/include/signal.h:101:23: note: expected ‘__sighandler_t’ but argument is of type ‘int’
4

2 に答える 2

6

f変数を踏みにじるのはやめましょう。

于 2012-04-23T01:21:23.713 に答える
2

スコープに応じてさまざまなものを参照するために名前を利用しfました。

于 2012-04-23T01:23:40.507 に答える