使用C语言的命令行命令

5

如果之前已经有相关内容,我很抱歉,但是我在StackOverflow上找不到。

基本上,我想运行通常在Windows命令提示符下运行的东西:

msiexec /i file.msi /q

以及其他类型的命令从我的C程序中运行。这可能吗?

谢谢。

4个回答

3

在Windows中,使用Win API的ShellExecute可以最好地控制您的子进程。然而,Dave18和Pablo提到的其他两种方法也同样有效。


2
尝试使用C 系统函数。
#include <stdlib.h>

int main ()
{

  system ("msiexec /i file.msi /q");
  return 0;
}

1

你需要使用exec函数族中的一个函数。这里是它们的列表。

因此,要运行你的示例,你可以使用:

execl("msiexec","/i","file.msi","/q",NULL);

-1 execl 不是 C89 或 C99 标准的 C 语言,而是 POSIX 90 标准,因此在 Windows 编译器中可能存在但不保证可用。请参见下面的系统示例,看哪个能够工作。 - user411313

1

Pablo和Dave是对的,这取决于你想做什么。

execl将新应用程序加载到内存中,并在当前进程的位置运行它。在execl()调用之后,您的程序将结束。

System在子shell中运行应用程序,您可以检索其退出状态,但无法获取有关其stdin/stdout数据的任何信息。

您对启动进程后发生的事情有多感兴趣?


既然你这么问,让我的程序在执行和退出时“保持”状态会很不错。 - Qosmo
system 创建一个子shell并执行您的字符串。它不会给您太多控制权。如果您更关心正在进行的操作(与分叉进程的fd交互),则 fork 然后 execl 是常见的用法。 - richo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接