2010年8月30日月曜日

PROCINFO = AWKのプロセスに関する情報。プロセスIDなど(Gawk専用) - AWK

AWKのパターンと制御文
△(部分対応)Gawk on Windows △(部分対応)Gawk ×mawk32 ×Mawk ×awk
AWKのプロセスに関する情報です。
o Windows版のGawkでは、部分的に対応していました。プロセスIDを取得する事が出来ます。

**** 書式
--------
PROCINFO[ "要素名" ]
--------

o この変数は、Gawkの拡張機能です。
o PROCINFOは配列です。 = 変数です。
o 要素名 -- pid などを指定出来ます。指定出来る値は、機能欄の通りです。


**** 機能
o PROCINFO["pid"] で、実行しているAWKのプロセスIDを取得出来ます。
o Windows版の場合、その他の値は、正しく設定されていない事があります。
o この機能をサポートしていない処理系があります。

o Gawk on Windows 3.1.7の場合
--------
PROCINFO["ppid"] = [0]
PROCINFO["pgrpid"] = [0]
PROCINFO["gid"] = [0]
PROCINFO["egid"] = [0]
PROCINFO["version"] = [3.1.5a]
PROCINFO["FS"] = [FS]
PROCINFO["uid"] = [0]
PROCINFO["euid"] = [0]
PROCINFO["pid"] = [2396]
--------


o Gawk for Windows 3.1.6の場合
--------
PROCINFO["ppid"] = [0]
PROCINFO["pgrpid"] = [0]
PROCINFO["gid"] = [0]
PROCINFO["egid"] = [0]
PROCINFO["version"] = [3.1.6]
PROCINFO["FS"] = [FS]
PROCINFO["uid"] = [0]
PROCINFO["euid"] = [0]
PROCINFO["pid"] = [2332]
--------


** 処理系に依存する動作
o この機能をサポートしている処理系は、次の通りです。
   + Gawk on Windows 3.1.7
   + Gawk for Windows 3.1.6


**** メモ
o Gawk以外では、外部プログラムを作って呼び出す方法が、きっと一番お手軽です。
   + 親プロセスのプロセスIDを表示するプログラムを作って、getline関数で取得します。
   + もしくは、「親プロセスのプロセスIDを終了コードに設定するプログラムを作って、system関数」でも取得出来そうです。この時は、最大値の時に正しく渡るかどうか、確認する必要がありそうです。

** その他
o 確認に使ったプログラムです。
--------
BEGIN {
  for (i in PROCINFO) {
    print "PROCINFO[\"" i "\"] = [" PROCINFO[i] "]";
  }
}
--------



**** 確認した処理系
o Gawk on Windows 3.1.7 -- 部分対応
o Gawk for Windows 3.1.6 -- 部分対応
o mawk MBCS (32bit版) 1.3.3 -- 非対応
o Mawk for Windows 1.3.3 -- 非対応
o original = the one true awk(updated May 1, 2007) -- 非対応


==
関連ページ:
    ▼AWKのパターンと制御文▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > AWKPATH = コマンドでAWKファイル名を指定する時、ファイルの場所を省略する(Gawk, mawk32専用)
    +
    ENVIRON = 環境変数。読み取り専用
(2010年9月1日変更。メモにあるソースコードを訂正)