- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在进行有关信号处理的圆顶调查。在这种特殊情况下,我对 Linux 上的 SIGTSTP(SLES 11 上的 3.0.101)感兴趣。编写了一个捕获 SIGTSTP 并打印其父 PID 和发送信号的进程的 PID 的小程序。
这是我看到的:
如果我使用 kill -TSTP,那么发送进程 PID 就是我在其中运行 kill 命令的 shell 的 PID,正如预期的那样。
如果我在 shell 中键入 ctrl+z,发送进程的 PID 为 0,但我期望的是我在其中按下 ctrl+z 的 shell 的 PID(并且我运行了捕获程序)
有人知道为什么会这样吗? 0 不应该是某些特殊的仅内核进程的 PID 吗? Sigaction 的文档告诉 kill 发送的信号将填充 si_pid 字段,但它没有提到 shell 快捷方式。也许 si_pid=0 表示“未指定的发件人”。
这是我的捕手程序
#include<stdio.h>
#include<stdlib.h>
#include<signal.h>
#include<unistd.h>
#include<string.h>
void tstp_handler(int num, siginfo_t* info, void* context)
{
pid_t ppid = getppid();
printf("\nReceived TSTP. pid %d ppid %d\n", info->si_pid, ppid);
}
int main(void)
{
struct sigaction action;
memset(&action, 0, sizeof(struct sigaction));
action.sa_sigaction = tstp_handler;
action.sa_flags = SA_SIGINFO;
sigaction(SIGTSTP, &action, NULL);
printf("Registered\n");
printf("My PID is %d\n", getpid());
while(1)
sleep(1);
return 0;
}
谢谢你和最好的问候
最佳答案
请consult the manual关于 struct siginfo
:
si_signo
,si_errno
andsi_code
are defined for all signals. (si_errno
is generally unused on Linux.) The rest of the struct may be a union, so that one should read only the fields that are meaningful for the given signal [...]
没有任何内容表明 info->si_pid
处于事件状态并且允许您阅读它。您的测试代码毫无意义。
继续阅读,您会发现使用 kill
发送信号 确实 填充了 si_pid
字段,这就是您看到正确 PID 的原因当您使用 kill
发送信号时。
关于c - 为什么sigaction说键盘快捷键发送的信号来自PID 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40235163/
如何检测在 WPF 中按下了 Ctrl + O 等快捷键(独立于任何特定控件)? 我 try catch KeyDown但KeyEventArgs不会告诉我 Control 或 Alt 是否已关闭。
我想给 JMenuItem 添加一个热键。我学会了如何添加看起来像 CTRL+SOME_KEY 的键。但我需要的是三重热键。类似 CTRL+ALT+W 的东西。我想给 JMenuItem 添加一个热键
我被要求制作一个日文版的桌面应用程序,将来可能会是中文版。所有字符串都保存在资源文件中,其中一些包含用于显示访问/快捷键的下划线,例如“_Save”或“Save _As ...”。当按下 Alt 键时
命令 我们在前面HelloWord章节中已经提到了命令写法,这里再重温一下。 context.subscriptions.push(vscode.commands.registerComma
我目前正在 MSDN 中游泳(淹没),寻找此问题的答案: 像 OneNote 一样,我希望我的通用 Windows 应用程序能够监听快捷方式。然后运行一些东西,并显示结果。 所以我发现了这个关于 La
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我对 Qt 完全陌生。 如何在 Mac 上用代码定义 Cmd + 数字键 键序列? 对于 Windows,我有 QKeySequence(QString("Ctrl+") + QString::num
我为javascript函数制作了一个快捷键。我设置了 S 键来启动此功能,因此设置了 Z 键来清除间隔功能,但我对此感到厌倦,当按 Z 键时,间隔不会停止:( var isCtrl = false;
问题: 我有一个 WebBrowser 并公开了它的 ActiveX 方法。在我的 WebBrowser 所在的表单中,我有一个带有快捷方式的 MainMenuStrip。只有当我在我的表单上的文本框
我正在尝试实现编辑器的快捷方式,但到目前为止还没有取得任何成功。 我想覆盖一些默认的 QScintilla 快捷键。我读过这篇answer ,但我不确定这是否有助于解决我的问题。 我还阅读了 Scin
基本配置(萌新看,大佬请跳到下一节) 1、创建项目 点击Create New Project创建新的项目,点击Open打开已有的项目。 先选择左侧的项目类型,在右边选择项目的所在目录,强烈
当我想用快捷键 ctrl + / 注释或注释掉我的代码时,IntelliJ 将 // 放在第一列而不是电流。当前如何发表评论? 例子 System.out.println(set.co
我经常更改编辑器的字体大小。那么有没有人知道快捷键?到目前为止,我必须通过几次点击来使用菜单:首选项 -> 颜色和字体 -> 基本 -> 文本字体。可以使用 CTRL + MouseWheel 会很好
如何将 Xcode 4 快捷键重置为默认值? Xcode -> 性能 -> 键绑定(bind) 我发现我设置了错误,但找不到重置为原始的方法。 我该怎么办?重新安装 Xcode 4? 最佳答案 只需单
我试图从 TEdit 的 OnKeyPress 事件中检测 Ctrl+V,并且我已经请注意,当按 Ctrl+AnyKey 时,Key 参数会采用不寻常的值。 示例: procedure TForm1.
我定义了这些 requireJs 选项: require.config({ baseUrl: '/js/', paths: { jquery: '/components
最近,FoxitReader for Linux 正式推出,我很喜欢。 http://www.webupd8.org/2015/09/foxit-pdf-reader-sees-new-linux-r
如果您通过查找或 Shift + Cmd + O 在 Appcode 中打开文件,您看不到该文件在项目中的哪个文件夹中。在项目资源管理器中,左侧顶部栏上有一个按钮,如果您将鼠标悬停在它上面,它会显示文
Eclipse 中是否有快捷键可以用其 unicode 转义序列 (\uXXXX) 替换特殊字符(重音)? 最佳答案 作为替代方法,您可以使用 Java 编辑器模板(请参阅 Eclipse Prefe
在 Visual Studio 中,当您在按钮等文本中的字母前使用“&”来获取带下划线的字母快捷方式时,ALT + that letter 执行按钮等。 我想知道如何在 Java 中做到这一点。我知道
我是一名优秀的程序员,十分优秀!