gpt4 book ai didi

CreateProcess 导致问题

转载 作者:行者123 更新时间:2023-11-30 21:27:02 29 4
gpt4 key购买 nike

由于某种原因创建进程打开cmd即使未指定按 Enter 键会导致命令行中弹出更多 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;
}

最佳答案

首先,当插入的字符串大小<(255-1)时,fgets将获取一个带有字符“\n”的字符串。因此,让我们将 \n 设置为 \0:

fgets(cmd, 255, stdin);
cmd[strlen(cmd) - 1] = '\0';
CreateProcess(cmd, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

第二,

more instances of cmd to popup in the command line.

如果你的意思是这样的:

enter image description here

这是因为cmd进程和当前进程的输入焦点交替出现在同一个控制台中,而不总是创建新实例。

如果您使用CREATE_NEW_CONSOLECreateProcess:

CreateProcess(cmd, NULL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);

您将看到仅创建了一个新的 cmd 控制台。 enter image description here

关于CreateProcess 导致问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55657299/

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