c++中popen()和printf与cout之间的奇怪交互
Strange interaction between popen() and printf vs. cout in C++
在没有看到所有源代码和库等的情况下,任何人都可以回答这个问题,这可能是一个很长的机会,但我会尝试。
我有一个用boost-1.41用c++写的程序X
。如果X
与std::cout
一起输出,那么在另一个程序中使用fp=popen("X", "r")
运行X
,可以通过fgets(buff, 1024, fp)
看到X
的输出。
现在,如果我改变X
使用printf()
而不是std::cout
, X
的输出不再可见。但是,从bash运行X
会产生预期的输出。
怎么解释这种差异呢?!我怀疑这里涉及到boost,但我对boost了解不多。
注意:我很高兴坚持std::cout
,我的问题解决了。但我试图了解printf()
的问题是什么。
原因是您可能将std::endl
与std::cout
一起使用。除了写入换行符外,还会刷新输出缓冲区。
要对printf
做同样的事情,您可以在调用后添加fflush(stdout);
。
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 在cuda线程之间共享大量常量数据
- std::cout.imbue()多重调用
- 在c代码之间共享数据的最佳方式
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- 为什么我的 cout 一次执行,尽管 cin 应该在两者之间读取?
- 如何根据定义的字符串类型在“std::cout”和“std::wcout”之间进行选择
- C++:cout 和函数调用之间的计算顺序
- "cout << x"和"cout.operator<<(x)"和"operator(std::cout, x)"之间的区别?
- 在 cout 语句之间暂停一段时间
- %p 和 cout 和 ptr 之间的C++区别
- 什么'使用std::cout和使用::std::cout之间的区别是什么
- 尝试在std::cout和std::ifstream之间切换
- 当我们使用 cout 时,boost::any 和 boost::variant 之间的区别<<
- c++中popen()和printf与cout之间的奇怪交互
- cout和用c++编写之间的区别
- cout set_precision(5) + 固定和 printf( "%lf.5" ,var) 之间的区别