![Что означает [..] в «ps» и как создать подобный процесс?](https://rvso.com/image/1286479/%D0%A7%D1%82%D0%BE%20%D0%BE%D0%B7%D0%BD%D0%B0%D1%87%D0%B0%D0%B5%D1%82%20%5B..%5D%20%D0%B2%20%C2%ABps%C2%BB%20%D0%B8%20%D0%BA%D0%B0%D0%BA%20%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D1%82%D1%8C%20%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%8B%D0%B9%20%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%3F.png)
При запуске 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
.