プロが教える店舗&オフィスのセキュリティ対策術

Solarisで、プロセスの二重起動チェックを行いたい
のですが、システムコールの使用など簡単に行える
方法はないでしょうか?
よろしくお願い致します。

A 回答 (2件)

以下のようなプログラムでプロセス名が取得できます。


他にもプロセスに関する情報をとれるのでがんばってください。


/* #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);
}
    • good
    • 0
この回答へのお礼

ありがとうございました。
動かしてみます。

お礼日時:2005/02/14 01:21

samba,Netscape,canna等のメジャーなものは


/tmp 等に起動時にファイルを作って、2重起動
のチェックに使っています。
っていう方法ではだめですか?

他にはSolaris 2.X からは /proc ファイルシステム
がありますので proc をチェックすることでもチェック
できますが、プログラムが複雑になるかな。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

起動時にファイルを作る方法は簡単で私も考えた方法
ですが、起動中はファイルが存在し、プロセス終了後
はファイルが存在しないという状態が保証されない
ため、できれば他の方法がいいかなと思うのですが...

procをチェックするというのは具体的にどうすること
なのでしょうか?
教えて頂けると嬉しいです。

お礼日時:2005/02/13 00:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!