Not getting full process name in psinfo_t struct\'s field pr_fname while reading process info from psinfo data file(/proc/%d/psinfo) into struct psinfo_t from procfs.h in solari
Solaris 11.3 SRU 5 introduced /proc/<pid>/execname
which contains the full command name, so you can check to see if that file exists and use it if so, else fall back to the limited pr_fname
.
See Solaris 11.3 SRU 5.6: updates in ps(1) and /proc/<pid>/{cmdline,environ,execname} for details.
The pr_fname
field of the psinfo_t
structure is 16 bytes long, per the source code:
#define PRFNSZ 16 /* Maximum size of execed filename */
So it will in fact be truncated to a maximum of 15 characters.
You can get the the name of the actual binary file from /proc/PID/map
. For a 32-bit process the exec'd binary will be mapped at address 0x00010000
.
You can browse the source code for ps
at http://src.illumos.org/source/xref/illumos-gate/usr/src/cmd/ps/ if you want to see where it finds its data.