perlで、現在UNIXで動いている全プロセスを得る関数はないですか?UNIXコマンドのps auxで得られるリストのようにです。

system関数を使うのはなしでお願いします。それ以外ならどんな方法でも構いません。よろしくお願いします。

回答の条件
  • 1人3回まで
  • 登録:2006/06/25 21:09:44
  • 終了:2006/06/27 21:40:57

ベストアンサー

id:villain No.2

villain回答回数174ベストアンサー獲得回数122006/06/25 22:08:30

ポイント40pt

OS依存になってしまいですが、Perlではバッククォート(`)で

囲んだ文字列をコマンドとして実行します。

(そのコマンドのないOSではエラーになって実行できません)

そのコマンドの結果は戻り値で得られるのでprintなどで表示

できます。


こういうことではなくて?

id:reiko-5555

バッククォートが使えましたかぁ。戻り値を配列に入れればそのまま使えそうですね。ありがとうございます。

2006/06/27 21:38:27

その他の回答(3件)

id:ohmix1 No.1

ohmix1回答回数235ベストアンサー獲得回数142006/06/25 21:53:56

ポイント35pt

open関数でコマンド実行できます。


http://www.kent-web.com/perl/chap6.html


open PS, "/usr/bin/ps aux |" or die "$!";

while (<PS>) {

  print $_;

}

close PS;

id:reiko-5555

なるほど。ありがとうございます。参考にさせていただきます。

2006/06/27 21:38:46
id:villain No.2

villain回答回数174ベストアンサー獲得回数122006/06/25 22:08:30ここでベストアンサー

ポイント40pt

OS依存になってしまいですが、Perlではバッククォート(`)で

囲んだ文字列をコマンドとして実行します。

(そのコマンドのないOSではエラーになって実行できません)

そのコマンドの結果は戻り値で得られるのでprintなどで表示

できます。


こういうことではなくて?

id:reiko-5555

バッククォートが使えましたかぁ。戻り値を配列に入れればそのまま使えそうですね。ありがとうございます。

2006/06/27 21:38:27
id:tombe No.3

tombe回答回数38ベストアンサー獲得回数72006/06/26 11:16:50

ポイント25pt

プロセスリストを取得する方法はOSごとに異なりますから、Perlの標準関数としては存在しません。

以下の Proc::ProcessTable のようなモジュールを導入するしか無いでしょう。

http://search.cpan.org/~durist/Proc-ProcessTable-0.40/ProcessTab...

これは標準モジュールではないので、別途インストールする必要があるかもしれません。

id:reiko-5555

モジュールもありましたか。ありがとうございます。こちらも試してみたいと思います。

2006/06/27 21:39:18
id:samejima No.4

samejima回答回数92ベストアンサー獲得回数82006/06/26 11:43:41

ポイント25pt

readdirやopenを駆使して/proc以下から情報を取得。

/procの構造に関してはman proc参照。

id:reiko-5555

/procの勉強になりました。ありがとうございます。

2006/06/27 21:39:44

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません