如果我有一个编译成功并生成可执行文件的C程序,在终端命令提示符中运行它时,如何指示程序打开一个新的终端窗口?我假设我使用了
system()
函数,但是这个函数在哪个头文件中,它需要什么实际的命令参数呢?头文件是 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
。
这取决于您想要打开哪个终端。有几种选择:xterm、konsole、gnome-terminal,以及其他很多。对于 konsole,您可以使用以下命令:
system("konsole");
终端应用程序通常在默认路径中,因此您无需指定绝对路径。
至于哪个头文件提供了system()
,您只需要阅读它的手册页面即可。您可以使用以下命令执行此操作:
man system
它提供了关于system()
的大量文档。请注意不要使用system()
的原因以及它们是否对您重要。
您需要执行终端模拟器。在我的情况下(我使用的是Kubuntu),它是Konsole,因此代码应为system("konsole")
。
如果我想要它在当前工作目录上执行ls命令,那么代码如下:
system("konsole --hold -e ls .");
使用系统时无法控制生成的终端。 另一方面,如果使用fork+exec,则可以通过重定向其流(dup2)与其交互。