Я пытаюсь создать оболочку, которая позволяет пользователю вводить команды «ping» и использовать CreateProcess() для выполнения команды на основе пользовательского ввода. Я столкнулся с трудностями при работе команды ping при работе с переменными. Например, приведенный ниже код работает просто отлично, пока у меня есть L перед строкой. Тем не менее, строка должна быть задана пользователем, поэтому после некоторого исследования я столкнулся с возможной заменой L-литья в виде переменной wchar_t.Передача аргументов в CreateProcess() не работает в C
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(), так и снаружи. Я не знаю, что еще делать. Как я могу заставить user scanf() в переменной, которая будет работать как аргумент для создания процесса?
Вы действительно считаете, что * «CreateProcess() не работает» *. Вы можете подумать, насколько маловероятно это, прежде чем утверждать это довольно заметно. Очевидно, что * ваш код «не работает» - «CreatePorcess()» в порядке - мусор, мусор. – Clifford
Я бы оспаривал дубликат метки - это не то, что он просил, и это не единственное решение проблемы . Вопрос можно прочитать как * «Как я могу использовать аргумент строки набора символов ANSI с CreateProcess()?» * – Clifford
@Clifford, если вы думаете, что вопрос должен быть сформулирован так ... отредактируйте его? –