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

perlで、ウインドウズのexeや、batファイルを起動させる方法を教えてください。引数を渡す方法とかも。

●質問者: showtarow
●カテゴリ:コンピュータ インターネット
✍キーワード:exe Perl ウインドウズ ファイル 引数
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● たーちゃん
●23ポイント

http://flex.ee.uec.ac.jp/texi/perl/perl_110.html

以下のように書けば引数付きで実行できます。

exec '/bin/echo', 'Your arguments are: ', @ARGV;


2 ● noboru
●23ポイント

終了を待つ場合は system()、現在動いている perl のプログラムと入れ替える場合は exec()、標準出力を受け取りたいとか標準出力を渡したい場合は open() でパイプを使えばできます。

あと、同じプログラムを途中で2つのプロセスに分割したい場合は fork() を使います。fork()→子プロセスの方で exec() とやるとバックグラウンドでプログラムを動かせます。(更に pipe() を使って標準入出力の繋ぎ直しなどをすると open() のパイプを使った入出力の繋ぎ直しと同じことができます。この辺のきめ細かい操作をしたい場合は UNIX 関係のプログラミングの本を見た方がわかりやすいかも知れません)。


3 ● mfjsk
●22ポイント

system関数か、exec関数を使います

system ('c:\winnt\notepad.exe d:\test.txt');

のようにDOSプロンプトで入力する文字をそのまま引数も含めて''で囲って入力すれば良いです。


exec も使い方は同じですが、execの場合、exeファイルを実行した段階で、perlが終了してしまいます。

systemの場合、perlがbatファイルやexeファイルが終了するのを待ちます。

いくつものexeを実行したいとか、exeを終了した後にも実行させたいperlがあればsystemを使っています。


4 ● villain
●22ポイント

プロセス制御やシステムコールに関する関数


Win(ActivePerl)環境では実装されていないものもいくつか

ありますが、基本的にexecかsystemを使用します。

execは実行すると制御が返ってきません。

systemは返ってきます。


また、バッククオートで実行する方法も...。

関連質問


●質問をもっと探す●



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