2 * CDE - Common Desktop Environment
4 * Copyright (c) 1993-2012, The Open Group. All rights reserved.
6 * These libraries and programs are free software; you can
7 * redistribute them and/or modify them under the terms of the GNU
8 * Lesser General Public License as published by the Free Software
9 * Foundation; either version 2 of the License, or (at your option)
12 * These libraries and programs are distributed in the hope that
13 * they will be useful, but WITHOUT ANY WARRANTY; without even the
14 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU Lesser General Public License for more
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with these librararies and programs; if not, write
20 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21 * Floor, Boston, MA 02110-1301 USA
23 /* $XConsortium: Process.C /main/3 1996/10/01 16:10:01 drk $ */
25 * (c) Copyright 1993, 1994 Hewlett-Packard Company *
26 * (c) Copyright 1993, 1994 International Business Machines Corp. *
27 * (c) Copyright 1993, 1994 Sun Microsystems, Inc. *
28 * (c) Copyright 1993, 1994 Novell, Inc. *
40 (void)Invoke("ps -e -F \"pid ppid uid command\"", &procs);
42 (void)Invoke("/bin/ps -el | awk '{printf(\"%s %s %s %s\\n\",$4,$5,$3,$NF)}'",
45 pprocs = (char **)malloc(sizeof(char *));
48 while(pprocs[NumProcs] = strtok(NULL, "\n"))
51 pprocs = (char **)realloc(pprocs, sizeof(char *) * (NumProcs + 1));
62 char *Process::GetByPid(pid_t _pid)
69 for (i = 0; i < NumProcs; i++)
71 long long_pid, long_ppid, long_uid;
72 sscanf(pprocs[i], "%ld %ld %ld", &long_pid, &long_ppid, &long_uid);
73 pid = (pid_t)long_pid;
74 ppid = (pid_t)long_ppid;
75 uid = (uid_t)long_uid;
80 last_proc = pprocs[i];
87 pid_t Process::Parent(pid_t pid)
89 char *proc = GetByPid(pid);
96 uid_t Process::UID(pid_t pid)
98 char *proc = GetByPid(pid);
105 char *Process::Command(pid_t _pid)
107 char *proc = GetByPid(_pid);
112 for (s = proc; *s == ' '; s++)
114 for ( ; *s != ' '; s++)
117 for ( ; *s == ' '; s++)
119 for ( ; *s != ' '; s++)
122 for ( ; *s == ' '; s++)
124 for ( ; *s != ' '; s++)
127 for ( ; *s == ' '; s++)