Another "why won't this work" program
BKEHOE at widener
BKEHOE at widener
Thu Aug 16 06:42:45 AEST 1990
/*
* This is being run on a Sun SS1 under 4.0.3.
* Theoretically, according to the Design & Implementation of 4.3BSD Unix,
* this should print out the ascii version of each process's current
* directory...instead, it chokes on u->u_cwd->cw_dir, which is in the
* u struct in sys/user.h .. any help, suggestions, etc would be greatly
* appreciated.
*/
/*
* cc -o cwd cwd.c -lkvm
*/
#include <stdio.h>
#include <kvm.h>
#include <fcntl.h>
#include <ctype.h>
#include <pwd.h>
#include <sys/param.h>
#include <sys/time.h>
#include <sys/proc.h>
#include <sys/user.h>
main (argc, argv)
{
*argv);
exit (1);
}
(void) printf("Name\t\tDir\n");
kvm_setproc (kd);
while ((proc = kvm_nextproc (kd)))
if (proc->p_stat != SZOMB && proc->p_uid) {
if (!(user = kvm_getu(kd, proc)))
continue;
(void) printf("%s\n", (getpwuid(proc->p_uid))->pw_name);
/* Curtains & Slow Music */
(void) printf("%s\n", user->u_cwd->cw_dir);
/* It dies, but the user structure's fine (printing user->u_comm works); I
stepped thru it with gdb & discovered that the pointer user->u_cwd is off in
never-never-land; is it a valid entry in
the user structure? */
}
}
More information about the Comp.unix.wizards
mailing list