gpt4 book ai didi

c++ - 如何使用 CreateProcess 将输出重定向到文件?

转载 作者:行者123 更新时间:2023-11-30 17:48:52 25 4
gpt4 key购买 nike

我尝试使用 CreateProcess 运行一个简单的命令,例如 hg > test.txt。我尝试将字符串作为一个整体运行(而不是将其分成应用程序名称及其参数)。为什么 CreateProcess(0, "notepad.exe test.txt", ...) 有效,但 CreateProcess(0, "hg > test.txt", ...) 不是吗?

最佳答案

下面的代码创建一个无控制台进程,并将 stdout 和 stderr 重定向到指定文件。

#include <windows.h>


int _tmain(int argc, _TCHAR* argv[])
{
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;

HANDLE h = CreateFile(_T("out.log"),
FILE_APPEND_DATA,
FILE_SHARE_WRITE | FILE_SHARE_READ,
&sa,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL );

PROCESS_INFORMATION pi;
STARTUPINFO si;
BOOL ret = FALSE;
DWORD flags = CREATE_NO_WINDOW;

ZeroMemory( &pi, sizeof(PROCESS_INFORMATION) );
ZeroMemory( &si, sizeof(STARTUPINFO) );
si.cb = sizeof(STARTUPINFO);
si.dwFlags |= STARTF_USESTDHANDLES;
si.hStdInput = NULL;
si.hStdError = h;
si.hStdOutput = h;

TCHAR cmd[]= TEXT("Test.exe 30");
ret = CreateProcess(NULL, cmd, NULL, NULL, TRUE, flags, NULL, NULL, &si, &pi);

if ( ret )
{
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return 0;
}

return -1;
}

关于c++ - 如何使用 CreateProcess 将输出重定向到文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18272818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com