【发布时间】:2019-04-12 18:00:15
【问题描述】:
由于某种原因创建进程打开 cmd 即使未指定 并按回车键会导致更多的 cmd 实例在命令行中弹出。
#include <windows.h>
#include <stdio.h>
void main()
{
PROCESS_INFORMATION pi;
STARTUPINFO si;
char cmdline[255];
ZeroMemory(&pi, sizeof(pi));
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
loop:
fgets(cmdline,255,stdin);
CreateProcessA(NULL,cmdline,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
goto loop;
}
【问题讨论】:
-
cmd在您的代码中显然是一个填充了用户输入的变量。你的问题中的“cmd”是指这个变量,还是指cmd.exe? -
我想如果你调试你的程序你就会明白为什么它会这样。你调试过你的程序吗?
-
出现命令窗口的唯一方式是,如果您的
cmd[]变量从调用控制台应用程序的用户那里接收到命令字符串。如果您不希望控制台应用程序显示命令窗口,CreateProcess()确实有一个可用的CREATE_NO_WINDOW标志。 -
字符串将包含
\n,这是您所期望的吗?