问题标签 [sigqueue]
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.
python - 如何在 Python 中发送和接收实时信号`sigqueue()`?
Python 提供了一个signals
模块和os.kill
; 它是否具有sigqueue()
(带有附加数据的实时信号)的功能?有哪些替代方案?
c - 如何在 ac 程序(在 linux 上)中接收使用 sigqueue 发送的信号?
如何在 ac 程序(在 linux 上)中接收使用 sigqueue 发送的信号?
如果只是使用 kill 发送信号,我只需添加一个类似这样的接收器
那指向一个像这样的简单函数:
但是如果我用 sigqueue 发送一个信号,那我该怎么办呢?
谢谢约翰
添加签名:
sigusr2 看起来像这样:
仅用于参考 sigqueue 示例
c++ - 无法使用 gcc 构建 sigqueue 示例,但 g++ 可以吗?
我有一个奇怪的构建问题。
我有一个简单的测试程序,可以将 sigqueue 发送到另一个进程。
这个小代码示例在我将它构建为 c++ 程序(使用 g++ 编译)时构建并运行,但是当我将它编译为 ac 程序(使用 gcc)时,我收到一个错误,他找不到 sigval 结构。
简短的例子:
请注意,我将 pid 替换为 0 以简化此问题。
如果我用 gcc 编译,我会得到:
我在这里缺少什么,为什么他找不到 sigval 结构?为什么g++能找到呢?
谢谢约翰
c - siginfo中的数据可信吗?
我发现在 Linux 上,通过自己调用rt_sigqueue
系统调用,我可以将我喜欢的任何内容放在si_uid
andsi_pid
字段中,并且调用成功并愉快地传递了不正确的值。自然地,发送信号的 uid 限制为这种欺骗提供了一些保护,但我担心依赖这些信息可能会很危险。有没有关于我可以阅读的主题的好文档?为什么 Linux 允许让调用者指定siginfo
参数而不是在内核空间中生成参数的明显不正确的行为?这似乎很荒谬,特别是因为可能需要额外的系统调用(以及因此的性能成本)才能在用户空间中获取 uid/gid。
编辑:基于我对POSIX的阅读(重点由我添加):
如果 si_code 为 SI_USER 或 SI_QUEUE、[XSI] 或任何小于或等于 0 的值,则信号由进程生成,si_pid 和 si_uid应分别设置为进程 ID 和发送者的真实用户 ID。
我相信 Linux 的这种行为是不符合标准的并且是一个严重的错误。
c - 我可以将带有 sigqueue 的 char* 发送到另一个进程吗
这是我在客户端程序中的一部分代码
这是我在服务器程序中的处理程序
没有错误,但我无法收到我发送的内容。它打印出一些奇怪的东西。
c - 如何接收 sigqueue() 系统调用发送的数据
我有 2 个进程 sigserver 和 sigclient。sigserver 等待信号到来,sigclient 将数据 (int+char) 发送到 sigserver。
sigserver.c
sigclient.c
现在,当我使用以下命令运行客户端时 ./client server_pid 15 teststring
服务器生成核心转储。
我的问题是,一个进程如何读取另一个进程(不是子进程)发送的字符串。
c - Send child pid using sigqueue and SIGUSR1 to father
I am trying to send a child's pid to his father using SIGUSR1 and sigqueue. But the signal is never sent, or it appears not to be sent.
Running the code above I get the following output:
And that's not all. If I run it again, all my apps close(editor,terminal,etc.) and I need to sign in again. (kind of a switch user operation) What's wrong with the code? Thanks.
c - sigqueue() 向进程组发送信号
我用 fork() 创建进程树(大约 3 个孩子)。我可以通过 kill(-getpgrp(), signal_number) 轻松地向它们所有人发送信号,但是如何对 sigqueue 做同样的事情呢?
他们说,sigqueue() 函数向一个进程或一组进程发送信号,但与 kill() 不同,我不能通过在 pid 中指定负值来使用 sigqueue() 向整个进程组发送信号.
那么该怎么做呢?
编辑:
代码:
s1.c 是一个程序,我在其中“捕捉”信号以控制它们。所以这对 s1(具有相同的组 id)等待来自 sigqueue() 的信号。
linux - 有没有办法在 OS X 上使用 sigqueue?
我最近注意到 sigqueue 在 OS X (mac OS Sierra) 上不起作用,我想知道是否有不使用虚拟机 (linux) 的方法
linux - 可以将信号从自处理推送到自处理,然后作为 EPOLL 上的事件处理吗?
我必须设计一个实时系统来处理从 posix mqueue(专有实现)上的多个进程接收到的数据。主要要求是不改变整个系统的主循环延迟,而是处理事件。我不想从接收数据的源进程创建事件,而是从自进程创建信号到自进程触发数据被接收,数据将在 EPOLL 处处理。
- 那么,做这样的事情安全吗?
- 我尝试了一个伪代码并得到了这个结果:“ sigqueue:(errno:11)资源暂时不可用”这可能是什么问题?
提前致谢。
问候, Tanuj Sinha