以下のようなプログラムでプロセス名が取得できます。
他にもプロセスに関する情報をとれるのでがんばってください。
/* #define SVR4_2_PROC */ /* for Solaris 2.6 */
#include
#include
#include
#ifdef SVR4_2_PROC
#include
#else
#include
#endif
#include
#include
#include
int
psinfo_of (pid, info)
pid_t pid;
#ifdef SVR4_2_PROC
psinfo_t *info;
#else
prpsinfo_t *info;
#endif
{
int fd;
char fname[32];
#ifdef SVR4_2_PROC
/* Solaris 2.6 */
sprintf (fname, "/proc/%d/psinfo", pid);
if ((fd = open (fname, O_RDONLY)) < 0) return -1;
if (read (fd, info, sizeof (psinfo_t)) < 0) {
close (fd);
return -1;
}
#else
/* Solaris 2.5 */
sprintf (fname, "/proc/%05d", pid);
if ((fd = open (fname, O_RDONLY)) < 0) return -1;
if (ioctl (fd, PIOCPSINFO, info) < 0) {
close (fd);
return -1;
}
#endif
close (fd);
return 0;
}
int
main (argc, argv)
int argc;
char *argv[];
{
#ifdef SVR4_2_PROC
psinfo_t info;
#else
prpsinfo_t info;
#endif
if (psinfo_of (getpid(), &info) < 0) exit (1);
fprintf (stdout, "name:%s\n", info.pr_fname);
exit(0);
}
お礼
ありがとうございました。 動かしてみます。