![]() |
![]() |
日本-日本語 | ![]() |
|
|
|
![]() |
![]() OpenVMS マニュアル |
|
![]() |
HP OpenVMS
|
目次 | 索引 |
指定された文字列を,コマンド・プロセッサで実行させるためにホスト環境に渡します。この関数は非リエントラントです。
#include <stdlib.h>int system (const char *string);
string
実行する文字列へのポインタ。 string が NULL である場合には,ゼロ以外の値が返されます。 string は DCL コマンドであり,イメージの名前ではありません。イメージを実行するには,いずれかの execルーチンを使用してください。
system関数はサブプロセスをスポーンし,そのサブプロセスの中で, string で指定されたコマンドを実行します。 system関数は,サブプロセスが完了するのを待ってから,関数の戻り値としてサブプロセス・ステータスを返します。サブプロセスは, system呼び出しの中で, vforkの呼び出しによってスポーンされます。このため, systemの呼び出しは, vforkの呼び出しの後,それに対応する exec関数の呼び出しの前に行うべきではありません。
OpenVMS Version 7.0 およびそれ以降のシステムでは, <stdlib.h>をインクルードし, _POSIX_EXIT 機能テスト・マクロを設定してコンパイルを行うと, system関数が返すステータスは,子を待つために waitpidを呼び出したときと同じようになります。このため,WIFEXITED および WEXITSTATUS マクロ ( wait* ルーチンの説明を参照) を使用して, 0~255 の範囲の終了ステータスを取得するようにしてください。
_POSIX_EXIT 機能テスト・マクロの設定は, /DEFINE_POSIX_EXIT を使用するか,ファイルの先頭で,他のファイルをインクルードする前に #define _POSIX_EXIT を指定することによって行います。
ゼロ以外の値 string が NULL だった場合には, system 関数がサポートされていることを示す値 1 が返されます。 string が NULL でなければ,値はサブプロセスの OpenVMS リターン・ステータスです。
#include <stdlib.h> #include <stdio.h> #include <unistd.h> /* write, close */ #include <fcntl.h> /* Creat */ main() { int status, fd; /* Creat a file we are sure is there */ fd = creat("system.test", 0); write(fd, "this is an example of using system", 34); close(fd); if (system(NULL)) { status = system("DIR/NOHEAD/NOTRAIL/SIZE SYSTEM.TEST"); printf("system status = %d\n", status); } else printf("system() not supported.\n"); }
この例のプログラムを実行すると,次の結果が出力されます。
DISK3$:[JONES.CRTL.2059.SRC]SYSTEM.TEST;1 1 system status = 1 |
目次 | 索引 |
![]() |
||||||||
|