将一个进程标准输出重定向到管道将产生不同的运行结果
Redirect one process stdout to pipe will make difference running result?
Poco::Pipe outputPipe;
Poco::Pipe errorPipe;
Poco::Process::Env env;
Poco::Process::Args arg;
Poco::Process::launch(exeFile, arg, workDir, 0 , &outputPipe, &errorPipe, env);
我使用上面的代码创建了两个进程,一个是对的,另一个是错的。然后我更改代码
Poco::Process::launch(exeFile, arg, workDir, 0 , 0, 0, env);
唯一的区别是我不会将标准输出和标准重定向到管道。然后我创建了两个流程,现在一切都好了。
在我看来,我不认为重定向 stdout 和 stderr 会导致进程运行并产生不同的结果。对吗?
如果我错了,什么情况会有所不同?
谢谢。
更改至少可以通过两种方式产生影响:
-
不显示读取管道的代码。如果其中一个管道在读取代码读取数据之前填充,则启动的进程将阻止写入管道,直到从管道读取数据。
-
当输出(特别是)是管道时,输出可能是完全缓冲的,而不是行缓冲或无缓冲的。 这可能意味着输出不像在非管道示例中那样迅速显示。 程序可能会编写一行,然后执行一些工作,然后编写另一行,但这两个行都不一定发送到读取管道的进程(除非应用程序刷新输出或设置行缓冲输出模式)。
相关文章:
- 在运行时使用范围更新结果
- 我们如何并行运行算法的 n 个实例并以有效的方式计算结果函数的平均值?
- 我在运行函数 GetVolumeInformation() 时得到非常随机的结果
- 在运行时记录 LLVM 中分支指令的结果
- 在向量上声明缩减,在 1 个线程上运行给出的结果与没有 openmp 的结果不同
- 简单的程序比较阵列运行但给出不正确的结果
- C 编程:在循环时运行 2 并从 loop1 获取数据的随机结果
- 在C /OBJ-C 中运行Tensorflow分类器模型与Python的结果不同
- 在运行libtorch的模型时获得的结果是不正确的,该模型经过训练并从Pytorch出口
- 由 startproc 运行的程序的 QDir::homePath() 的非预期结果
- 并行和顺序运行代码时会产生不同的结果
- *char数组到字符串(两次运行代码和两个不同的结果)
- 在CLION中调试模式和运行模式之间的怪异结果
- 在不同的编译器中运行c++代码会产生不同的结果吗
- 在单元测试(Nunit或MSTest)中从C#中调用的C 函数的原因是从控制台应用程序中运行的同一代码的不同结果
- 运行CMD命令并将结果获取到字符串变量
- 将一个进程标准输出重定向到管道将产生不同的运行结果
- 在 arduino 中运行代码时不显示输出结果
- 着色器中实现双精度cos()的结果是NaN,但在CPU上运行良好.出了什么问题
- 代码可以运行,但不在 Eclipse 中显示结果。