私は現在名前付きパイプを学んでおり、この概念を中心にクラスを作ろうとしています。これが私のテストメインです:
NamedPipe first("firstpipe"); // Stores the pipe name
NamedPipe second("secondpipe");
first.createPipe(); // Creates the pipe: mkfifo(mPipeName.c_str(), S_IRUSR | S_IWUSR)
second.createPipe();
pid = fork();
if (pid == 0)
{
first.openPipeOut(); // my class open with O_WRONLY
first << "first : test of send first " << "Hello !"; // write to the file descriptor
// My problem is here
std::string stringtest;
second.openPipeIn(); // this is opening with O_RDONLY
second >> stringtest; // overload to read
std::cout << stringtest << std::endl; // showing result
}
else
{
std::string stringtest;
first.openPipeIn(); //opening with O_RDONLY
first >> stringtest; // overload to read
std::cout << stringtest << std::endl; // showing result
// my problem is here :
second.openPipeOut(); // opening with O_WRONLY
second << "Second test" << " Hi !"; // overload to write
}
これを追加しないと、テストは完全に機能します。
std::string stringtest;
second.openPipeIn(); //this is opening with O_RDONLY
second >> stringtest; // overload to read
std::cout << stringtest << std::endl; // showing result
この
second.openPipeOut(); // opening with O_WRONLY
second << "Second test" << " Hi !"; // overload to write
実行すると、プログラムがブロックされ、最初のチェーン結果さえ表示されません。見逃したものはありますか?