我在 Linux 上,我正在从我的 C spawn 应用程序中 fork /执行一个新进程。是否也可以更改这些新子进程的命名?
我希望能够识别正在启动的进程,以防出现问题并且我需要手动终止它。目前它们都具有相同的名称。
最佳答案
我认为这应该可行,以说明原理...
#include <stdio.h>
int main(int argc, char *argv[]) {
argv[0][0] = 65;
sleep(10);
}
将更改名称,并用“A”代替第一个字母。 CtrlZ 暂停,然后运行 ps
以查看名称更改。我不知道,但这似乎有点危险,因为有些事情可能取决于 argv[0]
。
此外,我尝试将指针本身替换为另一个字符串;没有雪茄。所以这只适用于 strcpy
和比原始名称短或等于的字符串。
对此可能有也可能没有更好的方法。我不知道。
编辑:非文字解决方案:如果你正在 fork ,你知道 child 的 PID(getpid()
在 child 中,fork()
在父中的结果) .只需将它输出到您可以阅读的地方,然后通过 PID 杀死 child 。
另一个非文字解决方案:使用另一个名称 (ln -s a.out kill_this_a.out
) 建立到可执行文件的软链接(soft link),然后在执行时执行链接。该名称将是链接的名称。
关于在 Linux 中更改进程名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55804523/