13

When running ps, you get something like:

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]

All the daemon processes generally have the [..] brackets around them.

What do they mean (if anything)? How do you create a process that appears like this?

The reason I ask is we create a system daemon from the rcS (the programme uses fork to create the daemon), but ps entry looks like:

root       207  0.0  0.2   1516   200 ?        S    00:00   0:00 /root/testdaemo

So we were wondering if it is important to have the [..] brackets and how processes get them in the first place.

Thanks.

Manuel Jordan
  • 269
  • 5
  • 15
user626201
  • 231
  • 1
  • 2
  • 6

3 Answers3

19

Square brackets are used for processes that do not have an associated command line (mostly kernel threads and some system services).

If I recall correctly, you might be able to achieve the same effect for your process by setting argv[0] to the empty string.

7

Yes, they are kernel threads, created by kernel subsystems. They are created using kthread_create() or kernel_thread() functions in kernel.

2

Your example doesn't even show the [...], so I'm not 100% sure what you're talking about. However it IS possible to modify the argv arguments of any program (in Linux). The arguments are reflected in the output of ps.

Chris Eberle
  • 703
  • 4
  • 11