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