Я пытаюсь использовать file.cpp
для выполнения некоторых простых команд bash
. Код работает для таких команд, как ls
, gedit
, echo
, но сбой при cd
команда.Выполнение команд Bash с использованием кода C
Вот мой 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