パイプを使って OS の外部コマンドの出力を取得する方法
これは InterSystems FAQ サイトの記事です。
こちらの記事では、コマンド・パイプデバイスを使用して、外部コマンドの出力を取得する方法をご紹介します。
以下のように行います。
★コマンド出力を取得する例:
USER>kill
USER>set cmd="netstat -anp tcp"
USER>set pipe=##class(%File).%New(cmd)
USER>write pipe.Open("rq")
1
USER>while 'pipe.AtEnd { write !,pipe.ReadLine() }
アクティブな接続
プロトコル ローカル アドレス 外部アドレス 状態
TCP 0.0.0.0:23 0.0.0.0:0 LISTENING
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
(中略)
TCP 192.168.172.1:139 0.0.0.0:0 LISTENING
USER>
★コマンドのエラー出力を取得する例:
USER>kill
USER>set cmd="net use \\testsvr\public /user:testuser "_^pwd
USER>set cmd="net use \\testsvr\public /user:testuser "_^pwd_" 2>&1 "
USER>set pipe=##class(%File).%New(cmd)
USER>write pipe.Open("rq")
1
USER>while 'pipe.AtEnd { write !,pipe.ReadLine() }
システム エラー 1219 が発生しました。
同じユーザーによる、サーバーまたは共有リソースへの複数のユーザー名での複数の接続は許可されません。
サーバーまたは共有リソースへの以前の接続をすべて切断してから、再試行してください。
USER>
詳細は以下のドキュメントをご覧ください。
コマンド・パイプ デバイスを使用する方法について
ディスカッション (0)0
【ご参考】