我正在尝试创建一个允许用户输入“ping”命令并使用 CreateProcess() 根据用户输入执行命令的 shell。在处理变量时,我遇到了让 ping 命令工作的问题。例如,只要我在字符串前面有 L,下面的代码就可以正常工作。但是,字符串必须由用户输入给出,所以经过一些研究后,我遇到了可能以 wchar_t 变量的形式替换 L 转换。
if (strcmp(buffer, "ping") == 0 || strcmp(buffer, "ping &") == 0){
LPCTSTR path = L"C:\\Windows\\System32\\PING.exe";
LPTSTR link = L"-t www.yahoo.com";
CreateProcess(path,
link,
NULL,
NULL,
0,
0,
NULL,
NULL,
&start,
&info);
if (strcmp(buffer, "ping") == 0){
WaitForSingleObject(info.hProcess, INFINITE);
}
CloseHandle(info.hProcess);
CloseHandle(info.hThread);
printf("MyShell: ");
scanf("%s", buffer);
如果我进行此更改,它将停止工作(控制台崩溃,无输出)。
wchar_t wideC = "-t www.yahoo.com";
LPCTSTR path = L"C:\\Windows\\System32\\PING.exe";
LPTSTR link = wideC;
我尝试在 CreateProcess() 参数和外部强制转换不同类型的变量。我不知道还能做什么。如何让用户 scanf() 进入一个变量,该变量将用作创建进程的参数?