Perl:system 関数

2013-10-22 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での、blogramのランクインカテゴリは、
3、1、2、1、0、 2、1、0、0、0(38)で、換算ポイント 57pt 。
・-・ - -・

さて、本文。

前記事:
MPI プログラミング:Perl、R
で「Parallel::MPI::Simple」を見つけたが、
  ・・・・・
  ppm(GUI)では見つからない。
  そうなると、
  「App::cpanminus( ppm の代打?)」
  の登場。
  「cpanm Parallel::MPI::Simple --force」
  と、やってみた。
  ダメだ。コンパイルが済んで、リンクの段階でエラー???
  ・・・・・


それで、
邪道でしょうが、変なことを考えた。


Perl では、「system()」関数がある。
コマンドを実行する(system)
の様に、
  ・・・・・
  system() は、指定したコマンドを実行します。
  ・・・・・
  system() では、コマンドが終了するまで処理を Perl に戻しません。

ここで、
  コマンドが終了する前に、制御が戻れば、
  複数のコマンド(外部プログラム)を起動出来るが、・・・

そういった事が出来ないのか???


探してみました。
見つけました。
system 使用時にプログラムの終了を待たずに制御を返す方法
ですか?

  ・・・・・
  system で直接 notepad.exe を呼び出すのではなく、
  いったん start コマンドを介するようにして起動します。
  ・・・・・
  system "start", "notepad.exe";

の様に、「start」を使う?

やってみましたが、GUI なら良いが、
<紙>は、バッチで処理して欲しい。

他をあたってみた。

やはり、質問している人が居た。
Perl(Windowsで実行)の質問です。・・・
で、
ベストアンサーは、

  system(1, 'notepad.exe');
  これで望んだ動きになると思います。
  この方法は確かWindows+ActivePerl限定だったかな。

なになに、「1」を使う???

で、「Windows+ActivePerl限定」?
それで、十分。

やってみた。
これは使える。

他のPerlではどうかは、
<紙>には分からないが。

また、
「ActivePerl」の仕様がさっぱり分からないが。


これで、
任意の外部プログラムを、任意個数起動できる。

但し、起動後の状況については知る由もないが。


ここで、
次の問題。

自分自身を起動したらどうなるか。・・・

即ち、
「hogehoge.pl」の中で、
「system( "perl hogehoge.pl" );」
としたら、・・・・・


恐ろしいことダ。
所謂、
ブラクラ(「ウィンドウ無限表示型」)相当ダ。

で、
「system( 1, "perl hogehoge.pl" );」
だと、
もっと酷いことになる?


解決策として、
「起動パラメータ」の「有無」を判定する処理を追加する。

つまり、
自分は、ファイル(アイコン)ダブルクリックで起動された「メイン(親)」か、
そのメインから起動されたサブ(子)かを判定し、処理を振り分ける。

親なら、
「system( 1, "perl hogehoge.pl $PAR" );」
の様に子を起動し、
子なら、(これ以上、子を)起動しないで、目的の処理をする。


また、処理の完了を伝える方法として、

子は、完全に目的の処理が終わって、終了する直前に、
合い言葉(?)
何か適当にファイルを作って終了したことを伝える。
親は、そのファイルが存在するかしないかで判断する。


なんて方式で、

並列実行環境もどきが作れそうだ。


もう少し、考えてみよう。

と云うことで、継続検討か???



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


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

コメントの投稿

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

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
07 | 2017/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 Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク