运行时ps
,你会得到类似这样的结果:
root 2 0.0 0.0 0 0 ? S< 00:00 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S< 00:00 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S< 00:00 0:00 [events/0]
所有守护进程通常都带有[..]
括号。
它们是什么意思(如果有的话)?如何创建这样的流程?
我询问的原因是我们从 rcS 创建了一个系统守护进程(该程序使用 fork 来创建守护进程),但是 ps 条目如下所示:
root 207 0.0 0.2 1516 200 ? S 00:00 0:00 /root/testdaemo
因此,我们想知道括号是否重要[..]
,以及流程首先如何获得它们。
谢谢。
答案1
方括号用于没有关联命令行的进程(主要是内核线程和一些系统服务)。
如果我没记错的话,您可以通过设置argv[0]
为空字符串来实现相同的效果。
答案2
是的,它们是内核线程,由内核子系统创建。它们是使用内核中的 kthread_create() 或 kernel_thread() 函数创建的。
答案3
您的示例甚至没有显示[...]
,所以我不能 100% 确定您在说什么。但是,可以修改argv
任何程序的参数(在 Linux 中)。参数反映在 的输出中ps
。