1.プロセスの作成
コードの最初に:
1つ の#include " のiostream " 2 の#include <unistd.h> 3。 INT メイン() 4。 { 5。 使用した 名前空間STD; 6 pid_t PID; 7 COUT << " !親が持っている持っている" << ENDL; 8 PID =フォーク(); // フォークが起こったこと端にあるとき? 9を IF(PID == - 1)// エラー作成 10 { 11 にperror(" フォークエラー" ); 12 _exit(1 )。 13 } 14 、他の 場合(のpid == 0)// 子进程 15 { 16が 17 coutの<< " 私は子供だ、PID = " << GETPID()<< " 私の親は、次のとおりです。" <<)(<< getppid endl; 18 } 19 他// 父进程 20 { 21 // 睡眠(1)。 22 裁判所未満<< " 私は親だ、PID = " << GETPID()<<私の親は次のとおりです。" << getppid()<< てendl; 23 } 24 coutの<< " 両方持っています!「 << ENDL; 25 リターン 0 ; 26 }
結果:
手順と結果分析:
2.複数のサブプロセスを作成します。
1つ の#include " のiostream " 2 の#include <unistd.h> 3。 INT メイン() 4。 { 5。 使用した 名前空間STD; 6 pid_t PID; 7 COUT << " 親が持っている!" << ENDLと、 図8 のために(INT I = 0 ;私は< 5 Iは++; ) 9 { 10 ; PID =フォーク()// ときに何が起こったかの端にフォーク? 11。 IF(PIDの== 0 ) されている12 { 13は // : ""; << GETPID()<< ENDL Iが<< << + 1 COUT << "の子ID" 14 BREAK ; // これは非常に重要である、なぜ考慮 15 } 16 } 17 18は IF - (PID == 1)// 作成したエラー 。19 { 20である (perrorは" フォークエラー" ;) 21は _exit(1 ;) 22である } 23が 他 IF(PIDの== 0)// サブプロセス 24 { 25 // 睡眠(1); 26 COUTは<< " 私は子供だ、PID = " << GETPID()<< " 私の親は、次のとおりです。" << getppid()<< てendl; 27 } 28 他// 父进程 29 { 30 睡眠(1 )。 31 COUTは<< " 私は親だ、PID = " << GETPID()<< " 私の親は、次のとおりです。" << getppid()<< てendl; 32 } 33 COUT << " 両方持っています!" <<endl; 34 リターン 0 。 35 }
プログラムの結果:
手順と結果分析:
父と息子の共有プロセス
共有の原則に従ってください:共有読み書きの原理をコピーします。