I\'m trying to split the cmdline of a process on Linux but it seems I cannot rely on it to be separated by \'\\0\' characters. Do you know why sometimes the \'\\0\' character is
The /proc/PID/cmdline
is always separated by NUL characters.
To understand spaces, execute this command:
cat -v /proc/self/cmdline "a b" "c d e"
EDIT: If you really see spaces where there shouldn't be any, perhaps your executable (intentionally or inadvertently) writes to argv[]
, or is using setproctitle()
?
When the process is started by the kernel, cmdline is NUL-separated, and the kernel code simply copies the range of memory where argv[]
was at process startup into the output buffer when you read /proc/PID/cmdline
.