执行外部命令

时间:2010-03-17 16:47:10

标签: c linux

我正在尝试在C中创建一个程序,该程序提供GUI并允许用户从要安装在计算机上的应用程序列表中进行选择。我可以管理gui,但我从来没有被教过如何实际发出命令行命令。 我知道bash只有apt-get install firefox,但我怎么用C做这样的事情呢?即点击,该程序运行'apt-get install

另一个问题是我不熟悉这种互动的正确名称,所以很难搜索。

感谢您的帮助

5 个答案:

答案 0 :(得分:6)

如果您使用传统的C标准库,您可以选择:

  • popen() - 使用stdio IO流打开进程以读取/写入进程
  • system() - 执行与父
  • 具有相同IO流的进程

或:

  • fork() + execl()(或exec变体)本质上是system()的实现方式。

尝试所有这些的手册页。

另外,请订购W. Richard Stevens的“UNIX环境中的高级编程”

答案 1 :(得分:0)

您可以看到其他人如何做到这一点。看起来您正在尝试创建与Synaptic类似的内容,您可以查看其来源。

答案 2 :(得分:0)

您正尝试(1)执行命令行解析和(2)执行软件安装。你应该知道apt-get是一项重大任务。

答案 3 :(得分:0)

执行此操作的便携方式是使用system()。不那么便携但更灵活的方式是使用fork()后跟exec()。如果您需要/希望通过其stdinstdout与孩子进行交流(例如,如果您想捕获其输出并在窗口中显示),还有popen。

答案 4 :(得分:-1)

如果使用C不是必须的,您可以尝试使用Python(Perl)进行编码。您将大大缩短开发时间,并且可以使用易于使用的GUI模块,如tkinter(Python)或Tk(Perl)等。您将立即启动GUI。