It is possible to produce /proc/$PID/cmdline files which do not follow the NUL-seperated format, by using the tricks described in the paragraph below. Signed-off-by: Günther Noack <gnoack@xxxxxxxxxx> --- man5/proc.5 | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/man5/proc.5 b/man5/proc.5 index a9bb175e8..a16479634 100644 --- a/man5/proc.5 +++ b/man5/proc.5 @@ -497,10 +497,21 @@ unless the process is a zombie. .\" In Linux 2.3.26, this also used to be true if the process was swapped out. In the latter case, there is nothing in this file: that is, a read on this file will return 0 characters. -The command-line arguments appear in this file as a set of -strings separated by null bytes (\[aq]\e0\[aq]), +.IP +For processes which are still running, +the command-line arguments appear in this file +in the same layout as they do in process memory: +If the process is well-behaved, +it is a set of strings separated by null bytes (\[aq]\e0\[aq]), with a further null byte after the last string. .IP +This is the common case, +but processes have the freedom to override +the memory region and break assumptions +about the contents or format of the +.IR /proc/ pid /cmdline +file. +.IP If, after an .BR execve (2), the process modifies its base-commit: 4ca216bacc7d185c1af3c384ab53cd1ec74830d1 -- 2.40.1.698.g37aff9b760-goog