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

4
如果我有一个编译成功并生成可执行文件的C程序,在终端命令提示符中运行它时,如何指示程序打开一个新的终端窗口?我假设我使用了 system() 函数,但是这个函数在哪个头文件中,它需要什么实际的命令参数呢?

你想要的终端可能有一个命令行选项来告诉它要运行哪个可执行文件。因此,你可以创建一个小的shell脚本,以你的程序作为命令行选项调用终端。 - Charlie Burns
3个回答

5

头文件是 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


我刚试了一下,它完美地运行了!谢谢。这正是我在寻找的。 - Mr X

0

这取决于您想要打开哪个终端。有几种选择:xterm、konsole、gnome-terminal,以及其他很多。对于 konsole,您可以使用以下命令:

system("konsole");

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

至于哪个头文件提供了system(),您只需要阅读它的手册页面即可。您可以使用以下命令执行此操作:

man system

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


我想打开一个 Gnome 终端。 - Mr X

0

您需要执行终端模拟器。在我的情况下(我使用的是Kubuntu),它是Konsole,因此代码应为system("konsole")

如果我想要它在当前工作目录上执行ls命令,那么代码如下:

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

使用系统时无法控制生成的终端。 另一方面,如果使用fork+exec,则可以通过重定向其流(dup2)与其交互。


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