SUN SOLARIS 프로세서 목록 출력하기
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <dirent.h>
#include <sys/fcntl.h>
#include <sys/procfs.h>
int main(int argc, char *argv[])
{
getProcessList();
}
int getProcessList()
{
int fd;
DIR *dirp;
char pathName[256];
struct dirent *direntp;
prpsinfo_t psInfo;
if ((dirp = opendir("/proc")) == NULL) {
fprintf(stderr,"opendir fail; err[%d][%s]\n",errno,strerror(errno));
return -1;
}
while ((direntp = readdir (dirp)) != NULL) {
if ( !strcmp ( direntp->d_name, ".") || !strcmp ( direntp->d_name, ".." ) ) {
continue;
}
memset(pathName, 0x00, sizeof(pathName));
sprintf (pathName, "%s/%s", "/proc", direntp->d_name);
if ( (fd = open ( pathName, O_RDONLY )) < 0 ) {
continue;
}
if ( ioctl ( fd, PIOCPSINFO, &psInfo ) < 0) {
close ( fd );
continue;
}
close (fd);
fprintf(stdout, "[%s][%s][%s] \n", direntp->d_name, psInfo.pr_fname, psInfo.pr_psargs);
}
closedir (dirp);
return 1;
}
/proc 밑에 파일 구성...
# pwd
/proc
# ls -al /proc/
250 dr-xr-xr-x 111 root root 127680 5월 28일 15:25 ./
2 drwxr-xr-x 27 root root 512 4월 23일 09:16 ../
2 dr-x--x--x 5 root root 832 5월 14일 16:23 0/
2 dr-x--x--x 5 root root 832 5월 14일 16:23 1/
2 dr-x--x--x 5 user1 user1 832 5월 27일 18:17 10525/
2 dr-x--x--x 5 root root 832 5월 14일 16:24 124/
2 dr-x--x--x 5 daemon daemon 832 5월 14일 16:24 131/
2 dr-x--x--x 5 root root 832 5월 28일 10:48 13442/
2 dr-x--x--x 5 user1 user1 832 5월 28일 10:48 13445/
:
:
]# ls -al /proc/10525/
2 dr-x--x--x 5 user1 user1 832 5월 27일 18:17 ./
250 dr-xr-xr-x 111 root root 127680 5월 28일 15:27 ../
5472 -rw------- 1 user1 user1 2801664 5월 27일 18:17 as
1 -r-------- 1 user1 user1 152 5월 27일 18:17 auxv
1 dr-x------ 2 user1 user1 32 5월 27일 18:17 contracts/
1 -r-------- 1 user1 user1 36 5월 27일 18:17 cred
0 --w------- 1 user1 user1 0 5월 27일 18:17 ctl
0 lr-x------ 1 user1 user1 0 5월 27일 18:17 cwd -> /
1 dr-x------ 2 user1 user1 144 5월 27일 18:17 fd/
1 -r--r--r-- 1 user1 user1 120 5월 27일 18:17 lpsinfo
2 -r-------- 1 user1 user1 912 5월 27일 18:17 lstatus
2 -r--r--r-- 1 user1 user1 536 5월 27일 18:17 lusage
1 dr-xr-xr-x 3 user1 user1 64 5월 27일 18:17 lwp/
5 -r-------- 1 user1 user1 2112 5월 27일 18:17 map
2 dr-x------ 2 user1 user1 544 5월 27일 18:17 object/
6 -r-------- 1 user1 user1 2568 5월 27일 18:17 pagedata
2 dr-x------ 2 user1 user1 688 5월 27일 18:17 path/
1 -r-------- 1 user1 user1 72 5월 27일 18:17 priv
1 -r--r--r-- 1 user1 user1 336 5월 27일 18:17 psinfo
5 -r-------- 1 user1 user1 2112 5월 27일 18:17 rmap
0 lr-x------ 1 user1 user1 0 5월 27일 18:17 root -> /
3 -r-------- 1 user1 user1 1536 5월 27일 18:17 sigact
3 -r-------- 1 user1 user1 1232 5월 27일 18:17 status
1 -r--r--r-- 1 user1 user1 256 5월 27일 18:17 usage
0 -r-------- 1 user1 user1 0 5월 27일 18:17 watch
7 -r-------- 1 user1 user1 3344 5월 27일 18:17 xmap
#