• ベストアンサー

二重起動チェックについて

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

質問者が選んだベストアンサー

  • ベストアンサー
  • alicia-y
  • ベストアンサー率40% (85/208)
回答No.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); }

katsuboh
質問者

お礼

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

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • alicia-y
  • ベストアンサー率40% (85/208)
回答No.1

samba,Netscape,canna等のメジャーなものは /tmp 等に起動時にファイルを作って、2重起動 のチェックに使っています。 っていう方法ではだめですか? 他にはSolaris 2.X からは /proc ファイルシステム がありますので proc をチェックすることでもチェック できますが、プログラムが複雑になるかな。

katsuboh
質問者

お礼

ご回答ありがとうございます。 起動時にファイルを作る方法は簡単で私も考えた方法 ですが、起動中はファイルが存在し、プロセス終了後 はファイルが存在しないという状態が保証されない ため、できれば他の方法がいいかなと思うのですが... procをチェックするというのは具体的にどうすること なのでしょうか? 教えて頂けると嬉しいです。

すると、全ての回答が全文表示されます。

関連するQ&A