问题标签 [sigaction]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 在linux中对发送到CPU的两个信号做出反应
我写了以下代码:
}
int ut_start(void) {
}
我的目的是编写一个同时响应 SIGVTALRM 信号和 SIGALRM 的程序。但是,当我运行该程序时,该程序似乎只对 SIGALRM 信号作出反应。
在函数 ut_start() 中,我启动了一个每 100 微秒重置一次的计时器。我没有看到任何证据表明它有效。
还有一件事,如何调试这个程序以便我可以真正看到计时器已经启动?在调试模式下是否有任何变量可以告诉我有关计时器状态的信息?
c - C - 调用没有参数的参数声明的函数?
我正在尝试理解具有以下几行的代码:
我的问题是:
像这样调用函数是什么意思?它只是
NULL
作为参数吗?它是无效的,所以无论如何
new_Sigiterm.sa_handler
都会是?NULL
谢谢。
c - 在有或没有 sigsetjmp 的情况下使用 sigaction
我有一个练习,我必须实现一个函数,该函数将一个参数函数指针fun
、一个由所述指针指向的函数的参数parameter
和一个整数作为参数period
。如果函数的执行fun
指向 with parameter
as 参数在几秒之前终止,则此函数将返回 1,否则返回period
0。
这两种解决方案是否等效?
和:
我会说是的,但我想澄清我可能有的任何疑问。
c - sigaction 并在 linux 环境中使用 c 忽略信号
我是这种编程的新手,如果我的问题很琐碎,我很抱歉。我想要做的是在我的程序中导致分段错误,而不是退出程序,我想处理信号并在分段错误后继续执行。我写了一个似乎可以工作的代码,我只是想确保这是执行此操作的方法。所以这是我的代码。
有人可以向我解释为什么 myhandle 中的 printf 会运行两次吗?这段代码也可以吗?
谢谢你。
c - sigaction 的信号处理程序未在子进程中调用
我有一个程序,它为SIGSEGV
. 在信号处理程序中(我试图捕捉崩溃)我重新启动我的应用程序。
但是当我的应用程序复活时,它不再处理SIGSEGV
了。
这是一个例子:
我得到的输出是:
所以我可以看到 sighandler 以正确的方式设置,但复活的应用程序只是默默地崩溃了。
我错过了什么?
linux - sigtimedwait() 的“set”参数中的信号未传递
我最近一直在研究 Linux 上的信号处理,并阅读了与信号处理相关的所有概念。一个让我头疼的问题是,为什么 sigtimedwait() 集合中的信号在进程畅通时没有得到传递。我的代码如下: -
为了更清楚地说明这个问题,我在上面的代码中调用了 sigtimedwait,并将“s1”作为“set”参数。该集合仅包含信号 SIGINT。根据手册页, sigtimedwait() 会阻止进程,直到传递其集合中的一个信号。我对这个说法没意见。但是为什么当我通过 SIGINT 来解锁进程时没有调用 SIGINT 处理程序?另一方面,当我传递集合中不存在的 SIGALRM 或 SIGTSTP 时,EINTR 按预期返回,并且信号处理程序也被调用。
对于任何想观察场景的人,都可以执行上述代码,然后将 SIGINT 传递给它。他们将观察到进程在没有调用处理程序的情况下被解除阻塞。为什么不调用处理程序?我是否误解了sigtimedwait()手册页的任何部分?
c - 在C中使用信号,如何在定时器结束时停止和继续程序
我正在开发一个在 Raspberry-Pi (linux) 上运行的程序,它从 GPS 模块获取数据并对其进行处理。
目前,该程序以一个while(1)
循环为中心,该循环获取 GPS 数据并对其进行处理(数据以 GPS 模块的频率流式传输)。
但是,我知道while(1)
这不是一个非常省电的解决方案,(这个 RPi 稍后会放在无人机上)。
我想设置一个计时器,只有当计时器结束时,程序才会获取 GPS 数据。理想情况下,程序将完全停止,直到计时器结束,这样 CPU 就不会在其上浪费时间/精力。
如果通话
SIGSTOP
中不允许信号,我该怎么做?sigaction()
c - 如何在 sigaction.sa_flags 中设置多个标志
我有以下结构:
如何在不使第二个标志覆盖第一个标志的情况下将 SA_SIGINFO 与 SA_NODEFER 一起使用?
c - 第二次无法获得GETCHLD信号c linux eclipse
我有程序将信号 SIGCHLD 发送到系统 TWICE 中的所有其他进程。问题是,它只发送一次。
发送信号的程序:
程序获取信号:
功能是:
为什么它没有得到第二个信号,只有第一个?...帮助??