在 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/