相关疑难解决方法(0)

使用stdin stdout和stderr启动exe /进程?

使用C++如何使用stdin stdout和stderr启动exe /进程?我知道如何在.NET中执行此操作并且我记得在过去使用popen但是popen似乎允许stdin或stdout不是两者而​​不是全部3.

我需要这个用于Windows,但欢迎使用linux解决方案,因为我将来需要它用于同一个项目.

c++ stdin stdout process stderr

9
推荐指数
1
解决办法
1万
查看次数

使CreateProcess继承调用进程的控制台

当我在Windows中调用CreateProcess时,新进程似乎不会继承调用进程的控制台.我制作了一个运行"ruby xtest"的测试程序,xtest是一个将"hello"写入标准输出的脚本.我从Emacs运行了这个测试程序,没有输出.我还尝试了以下代码调用GetStdHandle,但同样没有输出.然后我尝试将dwCreationFlags中的CREATE_NEW_CONSOLE传递给CreateProcess,后者用Ruby输出创建了一个全新的窗口.最后,我做了一个简单的fork/exec测试程序,并使用Cygwin的GCC编译它.这个程序工作:Ruby输出出现在Emacs中如预期的那样.我试图在http://cygwin.com/cgi-bin/cvsweb.cgi/src/winsup/cygwin/spawn.cc?rev=1.268&content-type=text/x-cvsweb-markup&中破译Cygwin源代码.但失败了.那么,如何使新进程继承父进程的控制台,以便子进程的输出按预期显示?

STARTUPINFO si;
PROCESS_INFORMATION pi;
memset(&si, 0, sizeof(si));
memset(&pi, 0, sizeof(pi));
si.dwFlags |= STARTF_USESTDHANDLES;
si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
if(!CreateProcess(0, "ruby xtest", 0, 0, 1, 0, 0, 0, &si, &pi)) die("CreateProcess");
Run Code Online (Sandbox Code Playgroud)

windows console createprocess

7
推荐指数
2
解决办法
6470
查看次数

标签 统计

c++ ×1

console ×1

createprocess ×1

process ×1

stderr ×1

stdin ×1

stdout ×1

windows ×1