尝试从c ++ linux执行命令行代码

时间:2013-01-26 00:34:35

标签: c++ linux command-prompt

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

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

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

gnome-terminal命令执行正常。关闭终端后,当我期待cd执行时,不会发生。你能帮助我并指出原因吗?谢谢。我期待这个功能让cmd下到主目录 ,但事实并非如此。我在linux工作

我甚至通过移除gnome来尝试它。简单的CD无法正常工作。我在做什么rong&gt;?

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

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

3 个答案:

答案 0 :(得分:8)

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

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

system("gnome-terminal -x sh -c 'cd /tmp ; ls -la'");

答案 1 :(得分:4)

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

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

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

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

答案 2 :(得分: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中的工作目录,我还没有想到这一点。