答案 0 :(得分:6)
我相信你必须改为使用CreateProcess。
答案 1 :(得分:1)
我必须说,现有的答案并不是特别具有描述性。这是一种在没有新cmd.exe
窗口的情况下执行命令的方法。
基于an answer by Roland Rabien和MSDN,我写了一个工作函数:
int windows_system(const char *cmd)
{
PROCESS_INFORMATION p_info;
STARTUPINFO s_info;
LPSTR cmdline, programpath;
memset(&s_info, 0, sizeof(s_info));
memset(&p_info, 0, sizeof(p_info));
s_info.cb = sizeof(s_info);
cmdline = _tcsdup(TEXT(cmd));
programpath = _tcsdup(TEXT(cmd));
if (CreateProcess(programpath, cmdline, NULL, NULL, 0, 0, NULL, NULL, &s_info, &p_info))
{
WaitForSingleObject(p_info.hProcess, INFINITE);
CloseHandle(p_info.hProcess);
CloseHandle(p_info.hThread);
}
}
适用于所有Windows平台。像system()
一样打电话。