问题标签 [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.

0 投票
1 回答
80 浏览

linux - 在linux中对发送到CPU的两个信号做出反应

我写了以下代码:

}

int ut_start(void) {

}

我的目的是编写一个同时响应 SIGVTALRM 信号和 SIGALRM 的程序。但是,当我运行该程序时,该程序似乎只对 SIGALRM 信号作出反应。

在函数 ut_start() 中,我启动了一个每 100 微秒重置一次的计时器。我没有看到任何证据表明它有效。

还有一件事,如何调试这个程序以便我可以真正看到计时器已经启动?在调试模式下是否有任何变量可以告诉我有关计时器状态的信息?

0 投票
0 回答
1267 浏览

c - sigaction,隐式声明

0 投票
3 回答
84 浏览

c - C - 调用没有参数的参数声明的函数?

我正在尝试理解具有以下几行的代码:

我的问题是:

  • 像这样调用函数是什么意思?它只是NULL作为参数吗?

  • 它是无效的,所以无论如何new_Sigiterm.sa_handler都会是?NULL

谢谢。

0 投票
1 回答
254 浏览

c - 在有或没有 sigsetjmp 的情况下使用 sigaction

我有一个练习,我必须实现一个函数,该函数将一个参数函数指针fun、一个由所述指针指向的函数的参数parameter和一个整数作为参数period。如果函数的执行fun指向 with parameteras 参数在几秒之前终止,则此函数将返回 1,否则返回period0。

这两种解决方案是否等效?

和:

我会说是的,但我想澄清我可能有的任何疑问。

0 投票
5 回答
6370 浏览

c - sigaction 并在 linux 环境中使用 c 忽略信号

我是这种编程的新手,如果我的问题很琐碎,我很抱歉。我想要做的是在我的程序中导致分段错误,而不是退出程序,我想处理信号并在分段错误后继续执行。我写了一个似乎可以工作的代码,我只是想确保这是执行此操作的方法。所以这是我的代码。

有人可以向我解释为什么 myhandle 中的 printf 会运行两次吗?这段代码也可以吗?

谢谢你。

0 投票
1 回答
1943 浏览

c - sigaction 的信号处理程序未在子进程中调用

我有一个程序,它为SIGSEGV. 在信号处理程序中(我试图捕捉崩溃)我重新启动我的应用程序。

但是当我的应用程序复活时,它不再处理SIGSEGV了。

这是一个例子:

我得到的输出是:

所以我可以看到 sighandler 以正确的方式设置,但复活的应用程序只是默默地崩溃了。

我错过了什么?

0 投票
1 回答
622 浏览

linux - sigtimedwait() 的“set”参数中的信号未传递

我最近一直在研究 Linux 上的信号处理,并阅读了与信号处理相关的所有概念。一个让我头疼的问题是,为什么 sigtimedwait() 集合中的信号在进程畅通时没有得到传递。我的代码如下: -

为了更清楚地说明这个问题,我在上面的代码中调用了 sigtimedwait,并将“s1”作为“set”参数。该集合仅包含信号 SIGINT。根据手册页, sigtimedwait() 会阻止进程,直到传递其集合中的一个信号。我对这个说法没意见。但是为什么当我通过 SIGINT 来解锁进程时没有调用 SIGINT 处理程序?另一方面,当我传递集合中不存在的 SIGALRM 或 SIGTSTP 时,EINTR 按预期返回,并且信号处理程序也被调用。

对于任何想观察场景的人,都可以执行上述代码,然后将 SIGINT 传递给它。他们将观察到进程在没有调用处理程序的情况下被解除阻塞。为什么不调用处理程序?我是否误解了sigtimedwait()手册页的任何部分?

0 投票
1 回答
1958 浏览

c - 在C中使用信号,如何在定时器结束时停止和继续程序

我正在开发一个在 Raspberry-Pi (linux) 上运行的程序,它从 GPS 模块获取数据并对其进行处理。

目前,该程序以一个while(1)循环为中心,该循环获取 GPS 数据并对其进行处理(数据以 GPS 模块的频率流式传输)。

但是,我知道while(1)这不是一个非常省电的解决方案,(这个 RPi 稍后会放在无人机上)。

我想设置一个计时器,只有当计时器结束时,程序才会获取 GPS 数据。理想情况下,程序将完全停止,直到计时器结束,这样 CPU 就不会在其上浪费时间/精力。

如果通话SIGSTOP中不允许信号,我该怎么做?sigaction()

0 投票
1 回答
1446 浏览

c - 如何在 sigaction.sa_flags 中设置多个标志

我有以下结构:

如何在不使第二个标志覆盖第一个标志的情况下将 SA_SIGINFO 与 SA_NODEFER 一起使用?

0 投票
0 回答
64 浏览

c - 第二次无法获得GETCHLD信号c linux eclipse

我有程序将信号 SIGCHLD 发送到系统 TWICE 中的所有其他进程。问题是,它只发送一次。

发送信号的程序:

程序获取信号:

功能是:

为什么它没有得到第二个信号,只有第一个?...帮助??