[.. ] หมายถึงอะไรใน '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]

กระบวนการภูตทั้งหมดโดยทั่วไปจะมีเครื่องหมายวงเล็บ '[.. ]' ล้อมรอบพวกเขา

พวกเขาหมายถึงอะไร (ถ้ามี) คุณจะสร้างกระบวนการที่มีลักษณะเช่นนี้ได้อย่างไร

เหตุผลที่ฉันถามคือเราสร้าง system daemon จาก rcS (โปรแกรมใช้ fork เพื่อสร้าง daemon) แต่รายการ 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 หมายความว่าเคอร์เนลเธรดกำลังทำงานบน CPU ตัวแรก
Frédéric Hamidi

5

ใช่มันเป็นเคอร์เนลเธรดที่สร้างโดยระบบย่อยเคอร์เนล พวกเขาถูกสร้างขึ้นโดยใช้ฟังก์ชั่น kthread_create () หรือ kernel_thread () ในเคอร์เนล


2

ตัวอย่างของคุณไม่ได้แสดง[...]ดังนั้นฉันไม่แน่ใจ 100% ว่าคุณกำลังพูดถึงอะไร อย่างไรก็ตามมันเป็นไปได้ที่จะแก้ไขargvข้อโต้แย้งของโปรแกรมใด ๆ (ใน Linux) psข้อโต้แย้งที่จะสะท้อนให้เห็นในการส่งออกของ


2
[...]มีความหมายว่าเป็นตัวยึดตำแหน่ง ฉันหมายถึง[kthreadd]<- ชื่อ[]ที่แค็ปซูล

อ่าฉันเห็น ใช่ฉันเชื่อว่าสิ่งเหล่านี้เป็นกระบวนการเคอร์เนล
Chris Eberle
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.