我正在尝试使用 ifstream 打开一个命名管道,该管道最终将写入数据。
std::cout << "Opening " << name << std::endl;
std::ifstream manual_shutdown_file(name.c_str());
std::cout << "Opened " << name << std::endl;
当我运行程序时,它会阻塞在ifstream
构造函数中。我看到控制台打印了“Opening name”,但没有出现打开的语句。
我知道我正在连接到管道,因为如果我执行
$ echo foo > name
从 shell 中,然后构造函数返回并打印 Opened 语句。即使我不想立即尝试读取它,在管道中包含数据之前是否无法打开管道?