繁体   English   中英

从C程序执行命令行

[英]Execute command line from C program

我需要从ac程序执行以下命令:

clamscan.exe -r C:\testing -d"C:\Documents and Settings\All Users\.clamwin\db" -lC:\testing\results.txt

我试图使用CreateProcess函数,如下所示:

res = CreateProcess(NULL, "cmd.exe /c C:\\Program Files\\ClamWin\\bin\\clamscan.exe -r C:\\testing -d \"C:\Documents and Settings\All Users\.clamwin\db\" -lC:\\testing\\results.txt" , NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

具有以下错误处理:

if(res!=0) {
// Wait till cmd do its job
    WaitForSingleObject( pi.hProcess, INFINITE );
    // Check whether our command succeeded?
    GetExitCodeProcess( pi.hProcess, &dwErr );
    // Avoid memory leak by closing process handle
    CloseHandle( pi.hProcess );
} else {
    printf("not done");
    dwErr = GetLastError();
}

当我运行该程序时,我在消息框中收到以下错误两次:

cmd.exe - Application Error
The application failed to initialize properly (0x0000005).  Click on OK to terminate the application.

任何人都可以帮我理解问题是什么吗? 我甚至尝试将“cmd.exe”作为lpCommandLine传递,但我仍然得到相同的错误。

我看到以下问题:

  1. 您没有转义所有反斜杠字符。
  2. 这里不需要cmd。 直接启动可执行文件。
  3. CreateProcess的第二个参数需要一个可修改的缓冲区,但是你传递了一个文字。 由于实现细节,您通常使用ANSI来逃避它。 但正式来说这是错误的。 传递可修改的缓冲区。

另一件可能是问题的是你如何声明和初始化si 我们看不到那段代码。

当然,也许你的代码很好,但另一个应用程序是呕吐。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM