我很难理解sigaction()
的工作方式。
在<signal.h>
中,sigaction定义为
int sigaction(int sig, const struct sigaction *act, struct sigaction *oact)
但sigaction
也在bits/sigaction.h
中定义为结构。我在这里很困惑,C中的结构可以调用吗?
有人可以就此给我一个简短的解释吗?
答案 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
。但是这个例子相当过分,如果你在现实生活中做过类似的事情会让你看起来很脏。