プロセス上のUNIXネットワークプログラミング

1.fork()関数

以下は、非常に興味深いコードで、ソースコード:http://www.cnblogs.com/bastard/archive/2012/08/31/2664896.html

#include <unistd.h>  
#include <stdio.h> int main () { pid_t fpid; //fpid表示fork函数返回的值 int count=0; fpid=fork(); if (fpid < 0) printf("error in fork!"); else if (fpid == 0) { printf("i am the child process, my process id is %d/n",getpid()); printf("我是爹的儿子/n");//对某些人来说中文看着更直白。 count++; } else { printf("i am the parent process, my process id is %d/n",getpid()); printf("我是孩子他爹/n"); count++; } printf("统计结果是: %d/n",count); return 0; } 

親と子プロセスの出力、および2つのプロセスのID番号が異なっているが、コードを実行した後

コード、データ、およびプロセスに割り当てられたリソースを含む方法。元のプロセスとほぼ同じプロセスを作成し、システムが新しいリソース割り当てプロセスを与えることにより、フォーク()システムコール機能

fork()は一度だけ呼び出され、それを呼び出すための素晴らしい場所ですが、返すことが二度、それは、3つの異なる戻り値を持っていることがあります。

  • 親プロセスでは、フォークは、新しく作成された子プロセスのプロセスIDを返します。
  • 子プロセスでは、フォークは、0を返します。
  • エラーが発生した場合、フォークは負の値を返します

フォーク機能新しいプロセスが正常に作成された場合、実装は、2つのプロセスが発生し、親、子プロセスを完了した後に、2つのプロセスが独立しています

私たちは、pid_tデータ型を返すことにより、子プロセスまたは親プロセスが現在のプロセスの値を決定することができます

私は理解して:フォークスポーン子プロセス後の親プロセスは、これはプロセスであり、2番目の手順にターンを、fork関数の後に親プロセスが子プロセスを作成する前に、子プロセス最初のプロセスが最初になりました2つの親プロセスは、フォーク後も子プロセスを生成することができます。

2.getpid()関数とgetppid()

GETPID()

機能:プロセスIDを取得します。

戻り値:現在のプロセスのID

getppid()

機能:親プロセスのプロセスIDを取得します。

戻り値:現在のプロセスの親プロセスID

 

おすすめ

転載: www.cnblogs.com/181118ljh123/p/12002326.html