--- ps.cc.orig 2007-04-30 17:33:46.245634000 -0500 +++ ps.cc 2007-04-30 17:57:22.907472200 -0500 @@ -18,6 +18,7 @@ #include #include #include +#include static const char version[] = "$Revision: 1.11 $"; static char *prog_name; @@ -253,7 +254,7 @@ const char *ftitle = " UID PID PPID TTY STIME COMMAND\n"; const char *ffmt = "%8.8s%8d%8d%4s%10s %s\n"; const char *ltitle = " PID PPID PGID WINPID TTY UID STIME COMMAND\n"; - const char *lfmt = "%c %7d %7d %7d %10u %4s %4u %8s %s\n"; + const char *lfmt = "%c %7d %7d %7d %10u %4s %4u %8s %s"; char ch; aflag = lflag = fflag = sflag = 0; @@ -405,11 +406,27 @@ printf (ffmt, uname, p->pid, p->ppid, ttynam (p->ctty), start_time (p), pname); else if (lflag) - printf (lfmt, status, p->pid, p->ppid, p->pgid, - p->dwProcessId, ttynam (p->ctty), - p->version >= EXTERNAL_PINFO_VERSION_32_BIT ? p->uid32 : p->uid, - start_time (p), pname); - + { + printf (lfmt, status, p->pid, p->ppid, p->pgid, + p->dwProcessId, ttynam (p->ctty), + p->version >= EXTERNAL_PINFO_VERSION_32_BIT ? p->uid32 : p->uid, + start_time (p), pname); + if (p->ppid) + { + char procpath[MAX_PATH]; + FILE *f; + snprintf(procpath, MAX_PATH, "/proc/%u/cmdline", p->pid); + f = fopen(procpath, "rb"); + if (f) + { + int c = 1; + while (c != 0 && c != EOF) c = fgetc(f); + for (;c != EOF; c = fgetc(f)) printf("%c", c?c:' '); + fclose(f); + } + } + printf("\n"); + } } (void) cygwin_internal (CW_UNLOCK_PINFO);