[英]Executing Bash commands using C code
我正在尝试使用file.cpp
执行一些简单的bash
命令。 代码适用于ls
, gedit
, echo
等命令,但对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
然后是exec
或system
,或者通过在shell中键入它,还是通过其他方式运行,都会发生这种情况。
它对运行它的shell的当前目录没有影响。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.