|
|
1
4
你提到你使用的是Linux。这不是最干净的解决方案,但是您可以在/proc中检查每个条目,并根据您要查找的内容检查cmdline中的进程名称。 |
|
2
4
使用SysTLL Example code 编辑-它在Linux中可用 see here |
|
|
3
2
procfs的读取非常便宜,很多人认为通过/proc进行迭代就像通过/proc进行迭代一样,实际上根本不是这样。 通过跳过任何低于1000的条目来节省一些时间,检查内核线程是没有意义的。所以,基本上……在opendir()之后,如果strToInt()认为条目是一个int,而该int大于或等于1000,则只需读取/proc/%d/stat。 尝试避免仅仅解析“exe”链接的冲动,因为这不会告诉您将接收信号的进程的状态。例如,如果目标处于“d”(磁盘休眠)状态,您将希望知道,因为如果d状态是永久性的,则信号不会立即传递,或者可能永远不会传递。 在大多数系统中,有70到120个过程需要检查,并且您通常会在到达终点之前找到目标的方法。 |
|
|
4
2
你提到,“我能想到的一种方法是向那个进程发送一个套接字请求,并请求它的PID。”听起来你试图杀死的进程是你编写的一个程序。 如果是这样的话,canonical要做的就是在程序运行时将pid存储在一个文件中(通常在/var/run下,如果您有权访问它),并在程序退出时删除该文件。这样,检测程序是否正在运行就像
仔细研究上述代码的所有含义可能会教会您很多关于PID文件如何工作的知识。或者你可以要求更详细的解释。 |
|
|
5
0
这对我来说似乎很管用。 不过,您可能希望给出进程的完整路径,以免杀死具有类似名称的进程。 其主要优点是您可以指定要发送的信号。
|
|
|
6
0
为什么不将fcntl与f getown一起使用? |
|
|
7
0
要完成@Gregorgers答案,只需检查pidof的实现
如您所见,它只搜索/proc目录。 |
|
|
Christopher · 从角度信号中删除未定义的结果 2 年前 |
|
|
elfilado · 基于信号值分配Observable 2 年前 |
|
|
Shay · `waitpid`一个已经被waitpid'处理的进程 3 年前 |