2
2つのプロセス間のパイプを使用してプロセス間通信を行うには、2つのパイプを使用することが好ましく、そのうちの1つは、それと父親がそれから読むこと、そしてもう一つは反対のコミュニケーションをすることです。これはなぜより良い方法ですか?親と子の両方が読み書きできるようにパイプを1つしか使用できませんか?プロセス間通信、オペレーティングシステム、パイプ
2つのプロセス間のパイプを使用してプロセス間通信を行うには、2つのパイプを使用することが好ましく、そのうちの1つは、それと父親がそれから読むこと、そしてもう一つは反対のコミュニケーションをすることです。これはなぜより良い方法ですか?親と子の両方が読み書きできるようにパイプを1つしか使用できませんか?プロセス間通信、オペレーティングシステム、パイプ
プロセス間の通信をひどく疎かにする方法が必要です。それ以外の場合は、プロセスが何を書き込んだり何かを何度も読み書きします。例えば1つのパイプを使用する場合:
//parent
while(1)
{
write(p1);
//need a logic to wait so as to read what child wrote back and also so
// that we may not end up reading back what we wrote.
read(p1);
}
//child
while(1)
{
read(p1);
//need a logic to wait so as to read what child wrote back and also so
// that we may not end up reading back what we wrote.
write(p1);
}
2本のパイプを同期または使用するための偽の証明論理を見つけます。私はばかばかしい待機、sleep()
またはsignals
のような簡単なテクニックは、OSの人々が彼らの作品で概説したスケジューリングの問題に脆弱であると言っています。
パイプ自体が構造をブロックしているため、同期するためにパイプに依存します。
//parent
while(1)
{
write(p1);
//pipe blocks until till child writes something in pipe
read(p2);
}
//child
while(1)
{
//pipe waits for parent to write.
read(p1);
//parent is waiting to read.
write(p2);
}