2

私は現在名前付きパイプを学んでおり、この概念を中心にクラスを作ろうとしています。これが私のテストメインです:

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

実行すると、プログラムがブロックされ、最初のチェーン結果さえ表示されません。見逃したものはありますか?

4

0 に答える 0