我试图使用file.cpp
来执行一些简单的bash
命令。代码适用于命令如ls
,gedit
,echo
,但在cd
命令失败。使用C代码执行Bash命令
这里是我的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
编译后,我的终端输出,
[email protected]:~/Desktop$ g++ -Wno-write-strings file.cpp -o file
[email protected]:~/Desktop$ ./file
[email protected]:~/Desktop$
当前目录并没有改变,以/etc
。我试图更改cd /etc
到cd ..
,cd some_directory
在file.cpp
但没有成功。
请指出我做错了什么。
'exec'类型命令通常运行在它们自己的环境中。如其中,它们不会影响其他任何内容,例如您从中调用它们的过程。 – Iluvatar