我正在尝试理解具有以下几行的代码:
void terminate_pipe(int);
code code code...
struct sigaction new_Sigiterm;
new_Sigiterm.sa_handler = terminate_pipe;
我的问题是:
像这样调用函数是什么意思?它只是
NULL
作为参数吗?它是无效的,所以无论如何
new_Sigiterm.sa_handler
都会是?NULL
谢谢。
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);
}
像这样赋值的代码是设置一个处理程序(有时称为函数指针):基本上,在给定时间要运行的函数的地址。
C 中 this 的语法是命名函数,但不要放在()
末尾。这将返回函数的地址。
new_Sigiterm.sa_handler = terminate_pipe;