総合手引 | セクション 2 | English | Deutsch | オプション |
#include <unistd.h>
vfork() システムコールは、0 を子のコンテキストに、そして (後に) 子の pid を 親のコンテキストに戻します。
通常の場合、 vfork() システムコールは fork(2) のように使用できます。 しかし、 vfork() を呼び出したプロシージャから子のコンテキストで動作している間に 動作して戻ることはありません。 最終的に vfork() から戻ると、存在しないスタックフレームに戻るからです。 execve(2) を実行できない場合は、 exit(3) ではなく、 _exit(2) を呼び出してください。 exit(3) は標準入出力チャネルをフラッシュして閉じるため、 親プロセスの標準入出力データ構造体を壊してしまいます (fork(2) でも、バッファに入っているデータが 2 回フラッシュされるので、 exit(3) を呼び出さないでください)。
デッドロックを避けるため、 vfork() の途中で子になるプロセスには、 SIGTTOU シグナルや SIGTTIN シグナルが送信されません。 その代わりに出力、または、 ioctl(2) 呼び出しが許可され、入力しようとすると EOF となります。
VFORK (2) | June 4, 1993 |
総合手引 | セクション 2 | English | Deutsch | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | Unix’s “power tools” are more like power switchblades that slice off the operator’s fingers quickly and efficiently. | ” |
— The Unix Haters' handbook |