- 论坛徽章:
- 0
|
菜鸟问题:solaris下有没有C函数可以获得进程的相关信息?
写了个简单的程序,不是很完善
/* Usage: proc <pid>;
*/
#include <stdio.h>;
#include <unistd.h>;
#include <stropts.h>;
#include <sys/ioctl.h>;
#include <sys/old_procfs.h>;
#include <sys/types.h>;
#include <sys/stat.h>;
#include <fcntl.h>;
#include <errno.h>;
main(int argc, char **argv)
{
int fd;
char path[32];
prpsinfo_t procinfo;
snprintf(path,32,"/proc/%s",argv[1]);
fd = open(path, O_RDONLY);
printf("fd = %d\n", fd);
if (fd < 0){
fprintf(stderr, "open %s error:%s\n", path, strerror(errno));
close(fd);
exit(1);
}
ioctl(fd, PIOCPSINFO, &procinfo);
printf("status=%c\n", procinfo.pr_sname);
printf("zomb = %c\n", procinfo.pr_zomb); //if != 0, zomb
printf("nice = %c\n", procinfo.pr_nice);
printf("uid = %d\n", procinfo.pr_uid);
printf("gid = %d\n", procinfo.pr_gid);
printf("pid = %d\n", procinfo.pr_pid);
printf("ppid = %d\n", procinfo.pr_ppid);
printf("group leader = %d\n", procinfo.pr_pgrp);
printf("sid = %d\n", procinfo.pr_sid);
printf("start time = %d ns\n", procinfo.pr_start.tv_sec*10^9 + procinfo.pr_sta
rt.tv_nsec);
printf("user and system time = %d ns\n", procinfo.pr_time.tv_sec*10^9 + procin
fo.pr_time.tv_nsec);
printf("priority = %d\n", procinfo.pr_pri); //high value = high pri
printf("tty = %d\n", procinfo.pr_ottydev);
printf("used cpu = %d\%\n", procinfo.pr_pctcpu);
printf("used mem = %d\%\n", procinfo.pr_pctmem);
close(fd);
} |
|