无论如何将参数传递给信号处理程序?

Dam*_*ati 6 c

我正在注册SIGTERM的主要处理程序,如下所示:

signal(SIGTERM, sigterm_handler);
Run Code Online (Sandbox Code Playgroud)

处理程序很简单:

void sigterm_handler()
{    exit(1);    }
Run Code Online (Sandbox Code Playgroud)

如果我需要将一些参数传递给处理程序,如2指针或其他什么,该怎么办?如何在信号函数中注册处理程序?或者至少......无论如何都要实现这一目标?

注意:该过程被第三方进程杀死,而不是自身.但在关闭之前,我需要手动释放一些结构并将其写在文件上.

R..*_*R.. 6

你打算从哪里传递参数?发送信号的唯一时间是做你正在做的事情的合理方式,当你终止的过程不是过程本身时,但在这种情况下,指针将毫无意义.你可以传递一个带有sigqueue函数的指针并SA_SIGINFO输入信号处理程序,但它看起来像你不理解信号或者有充分的理由在一开始就使用它们.只想在退出而不是提高信号时进行函数调用......