Wenn Sie ps ausführen, erhalten Sie Folgendes:
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]
Alle Daemon-Prozesse sind in der Regel in eckigen Klammern "[..]" angegeben.
Was bedeuten sie (wenn überhaupt)? Wie erstellen Sie einen Prozess, der so aussieht?
Der Grund, den ich frage, ist, dass wir einen System-Daemon aus dem rcS erstellen (das Programm verwendet fork, um den Daemon zu erstellen), aber der ps-Eintrag sieht so aus:
root 207 0.0 0.2 1516 200 ? S 00:00 0:00 /root/testdaemo
Wir haben uns also gefragt, ob es wichtig ist, die Klammern "[..]" zu haben und wie Prozesse sie überhaupt bekommen.
Vielen Dank.
Antworten:
Eckige Klammern werden für Prozesse verwendet, denen keine Befehlszeile zugeordnet ist (hauptsächlich Kernel-Threads und einige Systemdienste).
Wenn ich mich richtig erinnere, können Sie möglicherweise den gleichen Effekt für Ihren Prozess erzielen, indem Sie festlegen
argv[0]
zu der leeren Zeichenfolge.quelle
mostly
- Was kann eine Ausnahme machen?Ja, es handelt sich um Kernel-Threads, die von Kernel-Subsystemen erstellt wurden. Sie werden mit den Funktionen kthread_create () oder kernel_thread () im Kernel erstellt.
quelle
Ihr Beispiel zeigt nicht einmal die
[...]
Ich bin mir also nicht zu 100% sicher, wovon du sprichst. Es ist jedoch möglich, die zu ändernargv
Argumente eines beliebigen Programms (unter Linux). Die Argumente spiegeln sich in der Ausgabe von widerps
.quelle
[...]
war als Platzhalter gedacht. Ich bezog mich auf die[kthreadd]
& lt; - die[]
das kapselt den Namen.