4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
23 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
27 #pragma ident "%Z%%M% %I% %E% SMI"
34 #include <sys/param.h>
39 show_cwd(const char *arg
)
41 char cwd
[MAXPATHLEN
], proc
[128];
46 if (proc_arg_psinfo(arg
, PR_ARG_PIDS
, &p
, &gcode
) == -1) {
47 (void) fprintf(stderr
, "%s: cannot examine %s: %s\n",
48 command
, arg
, Pgrab_error(gcode
));
52 (void) snprintf(proc
, sizeof (proc
), "/proc/%d/path/cwd",
55 if ((ret
= readlink(proc
, cwd
, sizeof (cwd
) - 1)) <= 0) {
56 (void) fprintf(stderr
, "%s: cannot resolve cwd for %s: %s\n",
57 command
, arg
, strerror(errno
));
63 (void) printf("%d:\t%s\n", (int)p
.pr_pid
, cwd
);
68 main(int argc
, char **argv
)
72 if ((command
= strrchr(argv
[0], '/')) != NULL
)
78 (void) fprintf(stderr
, "usage:\t%s pid ...\n", command
);
79 (void) fprintf(stderr
, " (show process working directory)\n");
83 retc
+= show_cwd(*++argv
);