我试图了解具有以下行的代码:
void terminate_pipe(int);
code code code...
struct sigaction new_Sigiterm;
new_Sigiterm.sa_handler = terminate_pipe;
我的问题是:
调用这样的函数是什么意思?它会去
只需将NULL
作为参数?
它是无效的,所以new_Sigiterm.sa_handler
无论如何都是NULL
?
感谢。
答案 0 :(得分:3)
new_Sigiterm.sa_handler
很可能是指向函数的指针。通过运行
new_Sigiterm.sa_handler = terminate_pipe;
它类似于说
new_Sigiterm.sa_handler = &terminate_pipe;
(与指针一样)。这不是运行函数,它只是制作一个指向函数的指针,如果你"运行"指针,指向的函数将运行。
这是如何声明函数指针:
void function(int x);
int main()
{
//Pointer to function
void (*foo) (int);
//Point it to our function
foo = function;
//Run our pointed function
foo(5);
}
答案 1 :(得分:1)
这个赋值的代码是设置一个处理程序(有时称为函数指针):基本上是在给定时间运行的函数的地址。
C中的语法是命名函数,但不要将()
放在最后。返回函数的地址。
new_Sigiterm.sa_handler = terminate_pipe;
答案 2 :(得分:0)
void terminate_pipe(int);
没有调用函数,它是函数的Forward declaration。new_Sigiterm.sa_handler
sa_handler
中Function Pointer。