Что означает [..] в '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

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

Спасибо.


Ответы:


14

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

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


1
mostly- что может сделать исключение?
n611x007

Что означает трейлинг / 0?
RyanN

4
@RyanN, это означает, что поток ядра работает на первом процессоре.
Фредерик Хамиди

5

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


2

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


2
[...]был задуман как заполнитель. Я имел в виду [kthreadd]<- то, []что инкапсулирует имя.

Ах я вижу. Тогда да, я считаю, что это процессы ядра.
Крис Эберле
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.