chdir()
изменяет только рабочий каталог вызывающего процесса.
Поэтому, когда у вас есть код, подобный ...
int main() {
// 1
chdir("/"); // error handling omitted for clarity
// 2
}
... искомпилируйте это в программу example
и затем запустите ее в оболочке:
$ pwd # 3
/home/sweet
$ ./example # 4
$ pwd # 5
/home/sweet
Затем у вас в игре два процесса,
оболочка, котораягде вы ввели pwd
и ./example
./example
, процесс запущен (оболочкой) с вашей программой компиляции.
chdir()
является частью вашей скомпилированной программы, а не оболочки, поэтому она влияет только на процесс с вашей программой, не оболочка.
Итак, на // 1
рабочий каталогвашей программы (в приведенном выше примере выполнения) - /home/sweet
, но на // 2
это /
, как указано в вызове chdir()
выше.Это не влияет на оболочку и вывод pwd # 5
, хотя!