Что означает [..] в 'ps' и как вы создаете такой процесс?

10

При запуске 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

Таким образом, мы задавались вопросом, важно ли иметь скобки [[]] и как процессы получают их в первую очередь.

Спасибо.

user626201
источник
unix.stackexchange.com/questions/22121/…
Сиро Сантилли 冠状 '审查 六四 事件 法轮功

Ответы:

14

Квадратные скобки используются для процессов, которые не имеют связанной командной строки (в основном это потоки ядра и некоторые системные службы).

Если я правильно помню, вы могли бы добиться того же эффекта для вашего процесса, установив argv[0]пустую строку.

Фредерик Хамиди
источник
1
mostly- что может сделать исключение?
n611x007
Что означает трейлинг / 0?
RyanN
4
@RyanN, это означает, что поток ядра работает на первом процессоре.
Фредерик Хамиди
5

Да, это потоки ядра, созданные подсистемами ядра. Они создаются с помощью функций kthread_create () или kernel_thread () в ядре.


источник
2

Ваш пример даже не показывает [...], так что я не на 100% уверен, о чем вы говорите. Однако возможно изменить argvаргументы любой программы (в Linux). Аргументы отражены в выводе ps.

Крис Эберле
источник
2
[...]был задуман как заполнитель. Я имел в виду [kthreadd]<- то, []что инкапсулирует имя.
Ах я вижу. Тогда да, я считаю, что это процессы ядра.
Крис Эберле