pidof: size optimizations (-50 bytes)
This commit is contained in:
@@ -9,6 +9,35 @@
|
||||
|
||||
#include "libbb.h"
|
||||
|
||||
/*
|
||||
In Linux we have three ways to determine "process name":
|
||||
1. /proc/PID/stat has "...(name)...", among other things. It's so-called "comm" field.
|
||||
2. /proc/PID/cmdline's first NUL-terminated string. It's argv[0] from exec syscall.
|
||||
3. /proc/PID/exe symlink. Points to the running executable file.
|
||||
|
||||
kernel threads:
|
||||
comm: thread name
|
||||
cmdline: empty
|
||||
exe: <readlink fails>
|
||||
|
||||
executable
|
||||
comm: first 15 chars of base name
|
||||
(if executable is a symlink, then first 15 chars of symlink name are used)
|
||||
cmdline: argv[0] from exec syscall
|
||||
exe: points to executable (resolves symlink, unlike comm)
|
||||
|
||||
script (an executable with #!/path/to/interpreter):
|
||||
comm: first 15 chars of script's base name (symlinks are not resolved)
|
||||
cmdline: /path/to/interpreter (symlinks are not resolved)
|
||||
(script name is in argv[1], args are pushed into argv[2] etc)
|
||||
exe: points to interpreter's executable (symlinks are resolved)
|
||||
|
||||
If FEATURE_PREFER_APPLETS=y (and more so if FEATURE_SH_STANDALONE=y),
|
||||
some commands started from busybox shell, xargs or find are started by
|
||||
execXXX("/proc/self/exe", applet_name, params....)
|
||||
and therefore comm field contains "exe".
|
||||
*/
|
||||
|
||||
/* find_pid_by_name()
|
||||
*
|
||||
* Modified by Vladimir Oleynik for use with libbb/procps.c
|
||||
|
||||
Reference in New Issue
Block a user