当前位置: 首页 > 面试题库 >

用户空间中的Linux C / C ++计时器信号处理程序

包永新
2023-03-14
问题内容

我需要在C / C ++ linux中每’n’毫秒激活一次的函数(例如,信号处理程序)。如何设置信号等,以便以毫秒分辨率注册计时器事件。

精度并非至关重要,但需要在数百毫秒左右的时间内。

我是Linux新手,我真的不知道从哪里开始。


问题答案:

setitimer(2)是一个好的开始,但是您真的要与信号异步吗?否则,您可能会有一个带有select(2)poll(2)以及适当超时的主循环。



 类似资料:
  • 信号是由操作系统传给进程的中断,会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上,可以通过按 Ctrl+C 产生中断。 有些信号不能被程序捕获,但是下表所列信号可以在程序中捕获,并可以基于信号采取适当的动作。这些信号是定义在 C++ 头文件 <csignal> 中。 信号 描述 SIGABRT 程序的异常终止,如调用 abort。 SIGFPE 错误的算术

  • 信号处理器会监听 Worker 进程和 自定义 进程启动后,自动注册到信号管理器中。 安装 composer require hyperf/signal 发布配置 您可以通过下面的命令来发布默认的配置文件到您的项目中: php bin/hyperf.php vendor:publish hyperf/signal 添加处理器 以下我们监听 Worker 进程的 SIGTERM 信号,当收到信号

  • 问题内容: 我需要在接收到任何终止命令(如SIGTERM和SIGKILL)时写入日志文件。 我可以注册SIGTERM,但是如何处理SIGKILL信号? 问题答案: 您不能,至少不是因为进程被杀死。 您 可以 做的是安排父进程监视子进程的死亡,并采取相应的措施。任何体面的过程监控系统(例如daemontools)都内置了这样的工具。

  • 我的程序的一部分通过网络连接接收输入,然后发回一条消息。我想限制某个输入触发消息的次数,这样程序就不会过载。 我有一个后台工作程序等待输入,然后当它收到特定的输入时,它调用一个静态类,该类将确定自上次输入以来是否有足够的时间。我用的是一个 这样做。看起来是这样的(所有内容都是公共的,所以我可以调试): 问题是,Time_Tick方法永远不会从计时器调用。我可以使用Invoke()来触发这样的方法,

  • 问题内容: 这应该非常简单,并且令我感到惊讶的是,我还没找到关于stackoverflow的答案。 我有一个类似程序的守护程序,该程序需要响应SIGTERM和SIGINT信号才能与新贵一起正常工作。我读到最好的方法是在与主线程不同的线程中运行程序的主循环,并让主线程处理信号。然后,当接收到信号时,信号处理程序应通过设置通常在主循环中检查的哨兵标志来告诉主循环退出。 我已经尝试过这样做,但是它没有按

  • 在Linux中,当一个程序(可能有多个线程)收到信号(如SIGTERM或SIGHUP)时会发生什么? 哪个线程拦截信号?多个线程可以获得相同的信号吗?是否有专门处理信号的特殊线程?如果没有,那么处理信号的线程内部会发生什么?信号处理程序例程完成后,执行如何继续?