FC2ブログ

Perl:プロセス存在確認

2013-10-30 :  PCクリニック
先週(13-10-22)の記事:
Perl:system 関数
では、変なことを考えた。

  system() で外部プログラムを起動する。
  しかし、
  処理が終了するまで制御が戻らない。

  そこで、

    system( 1, 'hogehoge.exe' );

  などとすると、
  起動したら、終了を待たずに、次の処理に進む。
  なお、
    この方法は確かWindows+ActivePerl限定だったかな。
  とあったが。


その後、あれこれ考えていた。

  $pid = system( 1, 'hogehoge.exe' );

とすると、起動したプログラムのプロセス番号が取得できる!!!

そうしたら、
起動したプロセスがどうなっているか?
知る方法はないのか???

生存確認の方法。



こんなページがあった:
プロセスの存在確認を行う方法 kill -0
  プロセスの存在を確認するためにはkillコマンドを使って
  オプションに0を指定します。
  killに0オプションを指定する場合はプロセスは終了したりは
  しませんので安心してください。
  ・・・・・

しかし、
これは「CentOSメモ」サイトの如く、
MS Windows では使えない。


更に探してみると、
この Yahoo!知恵袋
に載っていた。
  回答:
  @process = qx/tasklist/;
  で取得して、正規表現で分解格納すればいいのではないかと。
  ・・・・・

そうか。
MS-Win では、“プロセス”じゃなくて“タスク”???

それで、
「tasklist」をチェック。

なるほど。

1.パラメータ無しで、全ての実行中タスク一覧を取得。
  「tasklist」のみ

2.フィルターを使って、決め打ち。
  「tasklist /FI "PID eq 9999"」とか


決め打ちでは、

  イメージ名           PID セッション名   セッション# メモリ使用量
  ================= ======== =========== =========== ============
  cmd.exe            4612 Console          1   3,128 K

となるか、

  情報: 指定された条件に一致するタスクは実行されていません。

となる。


一覧では、上記の形式で、ズラズラ列挙される。

これで、出来るゾ。

後は、
C の popen - Perl では?
  ・・・・・
  ・ コマンドからパイプ入力用にオープン
  open( IN, "ls -l |" );
  @cmd = <IN>;
  close( IN );
  foreach $cmd ( @cmd ){
    print "$cmd \n";
  }
  ・・・・・

の活用ですね。


以上、
<紙>流:並列実行、と云うか「複数プロセス実行」?



見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


131023
関連記事
スポンサーサイト



コメントの投稿

管理者にだけ表示を許可する

人気blog Ranking



最新記事
カレンダー
07 | 2021/08 | 09
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

FC2 / i2i / Google




Google Analytics
ブックマーク