Linux/NPTL 上,线程被创建为某种进程。

我可以看到我的一些进程有一个奇怪的 cmdline:

cat /proc/5590/cmdline
hald-addon-storage: polling /dev/scd0 (every 2 sec)

你知道我如何为我的进程的每个线程做到这一点吗?这对调试非常有帮助。

/me 现在调查 HAL 源

谢谢

最佳答案

如果您想以可移植的方式执行此操作,可以跨多个 Unix 变体工作,那么可用的选项很少。

您需要做的是,您的调用方进程必须使用 argv [0] 参数来调用 exec,参数指向您希望在进程输出中看到的名称,并且文件名指向实际的可执行文件。

您可以使用以下命令从 shell 尝试此行为:

exec -a "This is my cute name" bash

这将用一个名为 "This is my cute name" 的进程替换当前的 bash 进程。

要在 C 中执行此操作,您可以查看 sendmail 或任何其他已广泛移植的软件的源代码,并找到跨操作系统所需的所有变体以支持此操作。

某些操作系统具有 setproctitle(3) API,其他一些操作系统允许您覆盖 argv [0] 的内容并显示该结果。

关于linux - 设置线程/proc/PID/cmdline?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/139859/

10-11 04:19