Що означають [..] у "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.