人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

perlで、現在UNIXで動いている全プロセスを得る関数はないですか?UNIXコマンドのps auxで得られるリストのようにです。
system関数を使うのはなしでお願いします。それ以外ならどんな方法でも構いません。よろしくお願いします。

●質問者: reiko-5555
●カテゴリ:コンピュータ
✍キーワード:AUX Perl PS UNIX コマンド
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● ohmix1
●35ポイント

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


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


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

while (<PS>) {

print $_;

}

close PS;

◎質問者からの返答

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


2 ● villain
●40ポイント ベストアンサー

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

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

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

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

できます。


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

◎質問者からの返答

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


3 ● tombe
●25ポイント

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

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

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

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

◎質問者からの返答

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


4 ● samejima
●25ポイント

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

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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ