Linux 如何向init添加自定义信号处理程序

Linux 如何向init添加自定义信号处理程序,linux,linux-kernel,counting,Linux,Linux Kernel,Counting,我正在设计一个实用程序来计算内核在给定时间段内执行的上下文切换的总数。为此,我考虑使用getrusage()系统调用。因为我需要上下文切换的总数,所以我会通过init进程使用getrusage(RUSAGE_CHILDREN,RUSAGE)。因为init是所有进程的父进程,所以我们应该得到上下文切换的总数。 我想在init中添加一个信号处理程序,这样每当它接收到SIGUSR1时,它就会执行getrusage()并创建一个日志文件。但我不知道如何将信号处理程序与进程相关联。 所以我想知道如何将自定

我正在设计一个实用程序来计算内核在给定时间段内执行的上下文切换的总数。为此,我考虑使用getrusage()系统调用。因为我需要上下文切换的总数,所以我会通过init进程使用getrusage(RUSAGE_CHILDREN,RUSAGE)。因为init是所有进程的父进程,所以我们应该得到上下文切换的总数。 我想在init中添加一个信号处理程序,这样每当它接收到SIGUSR1时,它就会执行getrusage()并创建一个日志文件。但我不知道如何将信号处理程序与进程相关联。
所以我想知道如何将自定义信号处理程序添加到init。

我认为这需要一些实际的代码,然后可以根据您得到的答案进行改进。您的标题实际上是误导性的,您的最后一个问题是“如何将自定义信号处理程序添加到init”。请编辑您的问题以正确反映您的问题。它与添加常规自定义信号处理程序有何不同?@buc030正是我的观点。当实际问题可能是“如何设置信号处理程序?”或“如何修改进程初始化?”时,问题标题是关于上下文切换的。跟踪这些问题的现有工具有什么问题:。特别是查看
perf
,您可能已经在系统上安装了它,并且可以轻松地执行一些简单的操作,如计数上下文切换。