<分区>
我正在尝试创建一个 shell,允许用户输入“ping”命令并使用 CreateProcess() 根据用户输入执行命令。在处理变量时,我遇到了让 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() 进入一个变量,该变量将用作创建进程的参数?