3

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

4

3 回答 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

于 2013-10-19T23:58:13.537 回答
0

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

system("konsole");

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

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

人系统

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

于 2013-10-19T23:58:00.303 回答
0

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

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

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

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

于 2013-10-20T00:02:13.840 回答