Настройка пользовательского рабочего каталога для процесса, запущенного с exec - PullRequest
6 голосов
/ 03 марта 2012

Я вызываю execv в своем коде C, чтобы запустить исполняемый файл, но я хочу установить в его рабочем каталоге что-то нестандартное.

Например, в одном случае я запускаю ls, но в нем перечислены файлы в каталоге моей исходной программы. Но я хочу установить рабочий каталог на что-то нестандартное. Как мне этого добиться, чтобы я установил /usr/bin и ls перечислил файлы в этом каталоге. И не давайте мне конкретного решения для ls, это был просто пример.

1 Ответ

14 голосов
/ 03 марта 2012

Используйте chdir(2) после успешного fork(2), перед выпуском:

switch (fork()) {
case 0:
    chdir(newpath); 
    execvp(...);
    break;            
}
...