Как вы думаете, что происходит, когда дочерний процесс выполняет chdir - это влияет на родительский процесс? - PullRequest
0 голосов
/ 01 мая 2018
int chdir(const char *path); 

-chdir изменяет текущий каталог на указанный в пути. если я использую эту команду для ребенка / это влияет на родителя?

Пожалуйста, объясните, почему (Да / Нет)?

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

В linux, если вы вызываете fork (), что происходит, если дочерний процесс просто становится копией адресного пространства родителей. После настройки нового адресного пространства они представляют собой отдельные процессы. Поэтому, когда вы вызываете chdir в одном процессе, это не повлияет на другой. Надеюсь, что это было полезно в некотором роде.

0 голосов
/ 01 мая 2018

Ребенок и родитель - это отдельные процессы. По большей части ресурсы для дочернего элемента копируются из ресурсов родителя при создании дочернего элемента, поэтому они являются отдельными ресурсами, а не общими ресурсами.

При запуске система создает начальный процесс. Эти процессы создают дополнительные системные процессы, для управления пользовательскими интерфейсами, для предоставления сетевых услуг и так далее. Когда вы входите в систему (что может быть автоматическим), один из этих процессов создает процесс для управления сеансом входа в систему, включая рабочий стол. Когда вы открываете приложения, этот процесс входа / сеанса (или что-то еще, что он создает) создает процесс приложения.

Если, когда дочерний объект изменил свой текущий каталог, также изменился каталог родительского объекта, изменился бы каталог родительского родительского элемента, а также его родительские элементы, и тогда все системные процессы, выполняющие резервное копирование линии, будут использовать другой каталог. Это не подходит; они не должны использовать каталог конкретного пользователя. Каждый процесс имеет свои собственные цели для того, чтобы иметь определенный текущий рабочий каталог.

...