【C言語】
プロセス / Process
インクルードファイル
- process.h
- wchar.h ----- ワイド文字数を使用する場合に必要
関数
子プロセスの作成
intptr_t _spawnl ( int mode, const char *cmdname, const char *arg0, const char *arg1, …, NULL);
intptr_t _spawnle ( int mode, const char *cmdname, const char *arg0, const char *arg1, …, NULL, const char *const *envp);
intptr_t _spawnlp ( int mode, const char *cmdname, const char *arg0, const char *arg1, …, NULL);
intptr_t _spawnlpe ( int mode, const char *cmdname, const char *arg0, const char *arg1, …, NULL, const char *const *envp);
intptr_t _spawnv ( int mode, const char *cmdname, const char *const *argv);
intptr_t _spawnve ( int mode, const char *cmdname, const char *argv, const char *const *envp);
intptr_t _spawnvp ( int mode, const char *cmdname, const char *const *argv);
intptr_t _spawnvpe ( Int mode, const char *cmdname, const char *argv, const char *const *envp);
intptr_t _wspawnl ( int mode, const wchar_t *cmdname, const wchar_t *arg0, const wchar_t *arg1, …, NULL);
intptr_t _wspawnle ( int mode, const wchar_t *cmdname, const wchar_t *arg0, const wchar_t *arg1, …, NULL, const wchar_t *const *envp);
intptr_t _wspawnlp ( int mode, const wchar_t *cmdname, const wchar_t *arg0, const wchar_t *arg1, …, NULL);
intptr_t _wspawnlpe ( int mode, const wchar_t *cmdname, const wchar_t *arg0, const wchar_t *arg1, …, NULL, const wchar_t *const *envp);
intptr_t _wspawnv ( int mode, const wchar_t *cmdname, const wchar_t *argv);
intptr_t _wspawnve ( int mode, const wchar_t *cmdname, const wchar_t *argv, const wchar_t *const *envp);
intptr_t _wspawnvp ( int mode, const wchar_t *cmdname, const wchar_t *argv);
intptr_t _wspawnvpe ( int mode, const wchar_t *cmdname, const wchar_t *argv, const wchar_t *const *envp);
modeの定数
_P_OVERLAY |
Unix系のOSでの「exec」系の関数と同じ動作。
関数を呼び出したプロセスは上書きされ、関数を呼び出した時点でプログラムが切り替わる
|
_P_WAIT |
新しいプロセスが完了するまで待機する。
関数の戻り値はプロセスの終了コードとなる。
|
_P_NOWAIT |
新しいプロセスが完了するまで待機せずに制御が戻る。
親プロセスと子プロセスは同時に動作する。
関数の戻り値は、プロセスハンドルとなる。
|
_P_NOWAITO |
|
_P_DETACH |
親プロセスの動作を継続し、子プロセスはバックグラウンドで動作する。 |
マクロ
_spawnl, _wspawnl |
_tspawnl |
_spawnle, _wspawnle |
_tspawnle |
_spawnlp, _wspawnlp |
_tspawnlp |
_spawnlpe, _wspawnlpe |
_tspawnlpe |
_spawnv, _wspawnv |
_tspawnv |
_spawnve, _wspawnve |
_tspawnve |
_spawnvp, _wspawnvp |
_tspawnvp |
_spawnvpe, _wspawnvpe |
_tspawnvpe |
パイプによるプロセス間通信
_pipe (fds, 256, _O_BINARY);
|
パイプの作成
書き込み、読み込みのディスクリプタを作成
|
_write (ディスクリプタ、 送信データ格納変数、 変数サイズ); |
パイプ通信の書き込み |
atoi (変数); |
読み込み用のディスクリプタの作成 |
_read (ディスクリプタ、 受信データ格納変数、 変数サイズ); |
パイプ通信の読み込み |
_close(ディスクリプタ); |
パイプに使ったファイルディスクリプタを閉じる |