在C中打开一个新的终端窗口

时间:2013-10-19 23:51:57

标签: c linux terminal

如果我有一个成功编译并生成可执行文件的C程序,当我在预先存在的终端命令提示符中从命令行运行它时,如何指示程序打开一个新的终端窗口?我假设我使用system()函数,但是那个标题是什么,实际的命令arg是什么?

3 个答案:

答案 0 :(得分:4)

头文件为stdlib.h,函数签名为int system(const char *command)。因此,在您的情况下,您可以调用这样的函数来生成一个新的终端窗口:

#include <stdlib.h>

int main(void) {
    int exit_status = system("gnome-terminal");
}

在C中,通常会检查大多数函数调用的返回值,以确定是否出现问题或获取有关调用的更多信息。 system()调用返回命令运行的退出状态,并存储在exit_status中以供进一步检查。

有关详细信息,请参阅man system

答案 1 :(得分:0)

取决于您要打开的终端。有几个:xterm,konsole,gnome-terminal和其他一大堆。对于konsole,您可以使用:

system("konsole");

终端应用程序通常使用默认路径,因此您无需指定绝对路径。

关于哪个标题提供system(),您需要做的就是阅读它的手册页。您可以使用以下命令执行此操作:

man system

它提供了大量关于system()的文档。请注意不使用system()的原因以及它们对您是否重要。

答案 2 :(得分:0)

您必须执行终端仿真程序。在我的情况下(我有Kubuntu)它是Konsole,所以它是system("konsole")

如果我希望它在当前工作目录上执行ls,那就是:

system("konsole --hold -e ls .");

你不能用系统做什么来控制产生的终端。 另一方面,如果你使用fork + exec,也许你可以通过重定向它的流来进行交互(dup2)