有人可以向我解释一下sigaction' sigaction'作品?

时间:2011-04-29 04:21:24

标签: c linux signals

我很难理解sigaction()的工作方式。

<signal.h>中,sigaction定义为

int sigaction(int sig, const struct sigaction *act, struct sigaction *oact)

sigaction也在bits/sigaction.h中定义为结构。我在这里很困惑,C中的结构可以调用吗?

有人可以就此给我一个简短的解释吗?

1 个答案:

答案 0 :(得分:5)

该函数名为sigaction,结构称为struct sigaction。函数和结构存在于C中的不同命名空间中。它与您执行此操作的方式类似:

#include <stdio.h>

struct x {
        int x;
};

static int
x(struct x *x) {
        return x->x;
}

int
main(void) {
        struct x y;
        /* But not "struct x x" as we want to call the "x" function below. */

        y.x = 1;
        printf("%d\n", x(&y));
        return 0;
}

编译器可以根据各种命名空间排序哪个x。但是这个例子相当过分,如果你在现实生活中做过类似的事情会让你看起来很脏。