11

我尝试了以下代码,以从 C++ 代码与命令行进行通信。

#include<iostream>
#include<cv.h>

int main()
{
    system("gnome-terminal");
    system("cd");
}

gnome-terminal 命令执行良好。在我关闭终端后,当我期望 cd 执行时,却没有发生。你能帮我指出原因吗?谢谢。我期待该功能使 cmd 进入主目录,但事实并非如此。我在linux下工作

我什至通过删除 gnome 进行了尝试。简单的 cd 不起作用。我在做什么?

如果我尝试 ls,它似乎工作正常!

我的主要目标是打开一个新终端,并通过打开新终端的当前程序在该新终端上执行命令。你能告诉我我怎么能做到这一点吗?

4

3 回答 3

11

如果您想运行一个程序并在执行下一行之前等待它完成,请查看此页面和此处的示例代码:http ://www.thegeekstuff.com/2012/03/c-process-control-functions /

但如果你想运行 gnome-terminal 并在新创建的窗口中执行命令,请执行以下操作:

system("gnome-terminal -x sh -c 'cd /tmp ; ls -la'");
于 2013-01-26T00:39:50.833 回答
7

system函数创建一个 shell 子进程来执行指定的命令。

cd是一个 shell 命令,它只改变那个 shell 进程的当前工作目录。

所以孩子cd可能工作正常,但它对你的 C++ 程序没有影响,这是一个不同的过程。

相反,您可能想查看 Linux 系统调用chdir

于 2013-01-26T00:38:33.400 回答
0

谢谢你的帮助!!此命令从此链接运行得非常好

https://superuser.com/questions/198015/open-gnome-terminal-programmatically-and-execute-commands-after-bashrc-was-execu

    gnome-terminal -x sh -c 'command1; command2; exec bash'

我在新窗口中输入了相应的命令。但是要更改shell中的工作目录,我还没有弄清楚。

于 2013-01-26T01:05:53.730 回答