我是ubuntu的新手,正在探索终端。我被困在这里。我有两个c ++文件x.cpp和y.cpp。我从第一个终端运行x。它有一行如下:
system("gnome-terminal");
这将打开一个新的终端窗口。接下来就是:
system("g++ y.cpp");
system("./a.out");
但是这会在同一个终端窗口中运行y。我希望你在新打开的终端窗口中运行。请帮忙。
答案 0 :(得分:3)
每次调用system()
都会运行一个单独的新进程,作为调用进程的子进程。进程之间没有关系(除了它们具有相同的父进程)。每次调用系统都不会在与前一次调用相同的上下文中运行另一个命令,就像在shell命令行上运行一样。
您可以使用要运行的命令启动gnome-terminal
(而不是shell提示符),这样您就可以使用system()
启动运行所需命令的gnome终端:
system("gnome-terminal -e 'sh -c \"g++ y.cpp && ./a.out\"'");
这将运行命令gnome-terminal -e 'sh -c "g++ y.cpp && ./a.out"'
(但您需要转义双引号字符以将命令放在C ++字符串文字中)。
告诉gnome-terminal
使用命令sh
g++ y.cpp && ./a.out
)