2016-10-03 5 views
-3

forkを使用してプロセスを作成し、名前/ラベルに従ってそれぞれの値を割り当てる必要があります。次に、C言語でpipes()を使用して値を転送します。私の質問は、プロセスに名前を付ける方法はあるのでしょうか?プロセスに名前を付けて、それぞれのプロセスに値を挿入する方法は、UNIXで名前を付けたものです

+2

これは素晴らしいことです。あなたは質問をするのを忘れてしまったようです。 – Siguza

+0

私は宿題が好きですが、実際の質問は何ですか?何を試しましたか?私たちはあなたのためにそれをすべて書き込むつもりはありません、それは確かです。 –

+0

私の質問は、プロセスに名前を付ける方法はありますか? – DHR

答えて

0

各プロセスには、固有の識別子,PIDがあります。 Linux(およびすべてのPOSIXyシステムとUnixシステム)では、これらの識別子は正の整数であり、1は特殊でinitです。

ユニークすることにより、上記の、私はすべてのアクティブな(実行中)のプロセスとゾンビプロセスは、独自のPIDを持って、そして何の2つが同じPIDを共有しないことを意味しかし、古いのPIDが最終的に、時には秒以内に、再利用されている;それは)

fork()は、子プロセスで(pid_t)0、親プロセスで子プロセスPIDを返します。作成した子プロセスのPIDを配列に格納することで、親プロセスはどの子がどの子であるかを知ることができます。

それぞれのプロセスは、自分自身のPIDが何であるかを知るためにいつもgetpid()を呼び出すことができます。

プロセスは、getppid()を呼び出して、親プロセスのPID(このプロセスを作成したfork()を呼び出したプロセスのPID)を見つけることもできます。しかし、実際の親が既に死んでいる/出てしまった場合、getppid()は1を返します(これはinitプロセスがある理由の半分です)initプロセスは、孤立したプロセスの親であり、オペレーティングシステムの起動時に他のすべてのプロセスを開始することができます)。

getpid()またはgetppid()のいずれも失敗する可能性があります。それぞれのPIDを常に返すことができます。

全体として、この種のデザインは実際には非常に一般的です。作業を行うために複数のプロセスを使用するすべてのデーモンは、基本的にはこれだけです。これは実際にこの運動が関連していることを意味します。

関連する問題