最初の「プロセス」プログラムを実行しようとしていますが、次のエラーが表示されます。
./fork.c: line 4: syntax error near unexpected token `('
./fork.c: line 4: `int main()'
私はコードが正しいと確信しています:
#include <sys/types.h>
#include <stdio.h>
int main() {
pid_t pid;
printf("Hello fork()\n");
switch(pid=fork()) {
case -1: printf("Error by fork().....\n"); exit(0);
case 0: printf("I'm the child process \n"); break;
default: printf("I'm the dad \n"); break;
}
exit(0);
}
なにが問題ですか?
15
後であなた自身の正気のために、「休憩」を入れてください。「case -1:」行で。後で感謝します。また、子プロセスで_exit(0)を呼び出し、親プロセスでexit(0)を呼び出します。
—
ブルースエディガー
@BruceEdigerなぜ必要なの
—
OrangeDog
_exit
?登録されているクリーンアップを行うことの何が問題になっていますか?
exit(0)は、stdoutとstderrをフラッシュします。_exit(0)はしません。プログラムがfork()を実行するときにstdoutにいくつかのバイトがあり、子がexit(0)を呼び出すと、二重出力になる可能性があります。fork()がどのように機能するかを学習しているので、なぜ自分を混乱させるのですか?
—
ブルースエディガー
@BruceEdigerの仕組みの学習に
—
OrangeDog
fork()
は、バッファされた出力をコピーできることの学習が含まれます。かなり複雑なシステムコールであるため、学習プロセスではおそらく混乱が必要です。