バッチファイル連携に使える”シグナル”を待つWindowsコマンド。別のバッチファイルからの連絡を待つ事が出来るプロセス間通信

最終更新日付: 2019年7月13日

Linuxには”シグナル”を受け取るtrapというコマンドがあったり、シグナルを送信するkillコマンドがありますが、今までWindowsには存在しませんでした。
最近、Windowsの標準コマンドプロンプトでもシグナルを使用出来る事を知りました!

シグナルとは?

image

シグナルとは、「プロセスから別のプロセスへイベントの発生通知」をする信号です。
あるプロセスが別のプロセスからシグナルを受信し連携することが出来ます。

シグナルでバッチファイル連携が出来るWindowsコマンド「waitfor」の使い方

image

こんなマニアックなコマンドがWindows上のコマンドプロンプトで使用できるとは知りませんでした、、、
Linuxのシェルスクリプトでもなかなかお目にかからないですが。

このツールにより、システム上でシグナルを送信したり待機したりできます。
/S が指定されていない場合、シグナルはメイン内のすべてのシステムにブロードキャストされます。
/S が指定されている場合、シグナルは指定したシステムにのみ送信されます。

環境:

Windows 7には標準コマンドとして存在しました。

コマンドプロンプトでシグナル待ちをしてみる

image

以下のコマンドで

WAITFOR CopyDone /T 10000

  • “CopyDone”というシグナルを受信するか
  • 10000秒待つか

の条件までバッチ処理を停止しています。

別のコマンドプロンプトからシグナルを送信してみる

image

別のコマンドプロンプトを立ち上げて以下のコマンドでシステムに「CopyDone」という名前のシグナルを送信します

WAITFOR /SI CopyDone

シグナル待ちのコマンドプロンプトでシグナル受信を確認

image

すると、

  • “CopyDone”というシグナルを受信するか
  • 10000秒待つか

だったコマンドプロンプトは”待ち”を終えて、プロンプトに戻ります。

なるほどー、マニアックですねー

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です