![]() |
1
16
以前的评论是:你可以用叉子叉一个孩子
正如你所说,这是相当昂贵的。我想,如果断言不规则地失败,那也不算太糟糕。也许让一个长时间运行的孩子来做这件事是值得的——在父代和子代之间共享两个管道,子代在读取一个字节时进行检查,然后将一个字节与状态一起发送回来。 |
![]() |
2
34
在Windows上有一个API ISDebuggerPresent来检查进程是否正在调试中。在Linux上,我们可以用另一种方法来检查这一点(不是很有效)。 “检查” /过程/自我/状态 “为了” 示踪 “属性。 示例代码:
|
![]() |
3
19
我最终使用的代码如下:
几件事:
不管怎样,谢谢你的回答。 |
![]() |
4
10
我也有类似的需求,并提出了以下备选方案
如果调用,调试中断函数将仅在附加调试程序时中断。 如果您在x86上运行,并且想要一个中断调用者的断点(不在 提升 ,只包括以下头,并使用调试中断宏:
|
![]() |
5
8
我发现文件描述符“hack”的修改版本 described by Silviocesare 和 blogged by xorl 为我工作得很好。 这是我使用的修改过的代码:
|
![]() |
6
6
如果你只是想知道应用程序是否在
|
![]() |
7
4
这与Terminus的回答类似,但使用管道进行通信:
尝试OSX下的原始代码时,我发现waitpid(在父代码中)总是返回-1,并中断一个eintr(系统调用)。这是由Pattach引起的,附加到父级并中断了呼叫。 现在还不清楚再次调用waitpid是否安全(在某些情况下,这看起来可能表现得不正确),所以我只是使用管道来进行通信。这是一个额外的代码,但可能会在更多的平台上可靠地工作。 此代码已在OSX 10.9.3、Ubuntu 14.04(3.13.0-24-generic)和FreeBSD 10.0上进行了测试。
对于实现流程功能的Linux,只有当流程具有
其他公用设施(
您可以检测流程是否有效
|
![]() |
Al-geBra · 在C中向POSIX共享内存对象添加一维数组 6 年前 |
![]() |
yaobin Anycorn · 如何导致Linux管道失败? 7 年前 |
![]() |
Omnifarious · 如何在Linux中删除补充组? 7 年前 |