を使用して、単純なbash
コマンドを実行しようとしています。コードはls
、gedit
、echo
などのコマンドでは機能しますが、cd
コマンドで失敗します。Cコードを使用してBashコマンドを実行する
[email protected]:~/Desktop$ g++ -Wno-write-strings file.cpp -o file
[email protected]:~/Desktop$ ./file
[email protected]:~/Desktop$
現在のディレクトリが/etc
に変更していない、私は./file
を使用してコンパイルした後、それを実行し、私の端子出力がある
#include <stdio.h>
#include <unistd.h>
int main() {
char *cd[] = {
"/bin/bash",
"-c",
"cd /etc",
NULL
};
execvp(cd[0], cd);
return 0;
}
:
は、ここに私のfile.cppです。私はcd /etc
をcd ..
に変更しようとしましたが、cd some_directory
はfile.cpp
になりましたが、成功しませんでした。
私が間違っていることを指摘してください。
'exec'タイプのコマンドは通常、自分の環境で実行されます。のように、彼らはあなたがそれらから呼び出されたプロセスのような、他の何にも影響しません。 – Iluvatar