繁体   English   中英

使用C代码执行Bash命令

[英]Executing Bash commands using C code

我正在尝试使用file.cpp执行一些简单的bash命令。 代码适用于lsgeditecho等命令,但对cd命令无效。

这是我的file.cpp:

#include <stdio.h>
#include <unistd.h>

int main() {
    char *cd[] = {
        "/bin/bash",
        "-c",
        "cd /etc",
        NULL
    };
    execvp(cd[0], cd);
    return 0;
}

我使用./file编译后执行它,我的终端输出是,

rahul@Inspiron:~/Desktop$ g++ -Wno-write-strings file.cpp -o file
rahul@Inspiron:~/Desktop$ ./file 
rahul@Inspiron:~/Desktop$ 

当前目录未更改为/etc 我尝试将cd /etc更改为cd .. ,将cd some_directory中的cd some_directory file.cpp但是没有成功。

请指出我做错了。

每个进程都有其自己的当前目录。

当您运行/bin/bash -c "cd /etc" Bash启动,更改其当前目录,然后退出。 无论您是使用exec还是fork然后是execsystem ,或者通过在shell中键入它,还是通过其他方式运行,都会发生这种情况。

它对运行它的shell的当前目录没有影响。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM