运行一个简单的shell命令

时间:2011-08-10 20:55:35

标签: winapi

当您只想运行像hg > test.txt之类的简单shell命令时,最好使用的WinAPI函数是什么?

3 个答案:

答案 0 :(得分:7)

要简单地运行文件,ShellExecute()CreateProcess()是最佳选择。

由于您希望将输出重定向到文件/运行shell命令,因此会使事情变得复杂......

输出重定向是命令提示符的一个功能,因此,您要运行的命令需要传递给cmd.exe(在NT / XP +上)并传递/c并将您的命令作为参数(ShellExecuteCreateProcess都可以)。

cmd /c "ipconfig >c:\debug\blah.txt"

然而,最好的方法是使用CreateProcess()并创建自己的管道来与程序的stdin和stdout交谈(这是cmd内部的所有内容)

答案 1 :(得分:2)

您可以使用ShellExecute(),但为什么不首先尝试system()?我不确定ShellExecute()是否可以实际进行管道或重定向。还有CreateProcess(),但这需要更多的工作。 CreateProcess()为您提供了最佳控制权。

答案 2 :(得分:1)

有两种发出命令的方法:Windows Shell方式和命令行方式。

Windows Shell通过对文件执行动词来发出命令。动词与注册表中的文件类型相关联。常见动词的示例是打开打印。用于此目的的WinAPI是ShellExecute。 Windows Shell无法帮助您将进程的输出传递给文件。您可以使用CreateProcess执行此操作,但它是a little bit involved

命令行方式是使用system函数。