Как программа в определенном месте?

При написании программы она работает в определенном каталоге, который является текущим рабочим каталогом.

Я пытаюсь понять больше об идее cwd. Как программа узнает, что это за cwd? Где хранится эта информация?

Я прекрасно знаю, как использовать os модуль в Python, но я не очень понимаю, что значит иметь CWD. Это просто атрибут данных, "это то, где мы находимся", который мы можем произвольно изменить? И мы просто ищем вещи и создаем вещи в этом конкретном разделе HD? Или какой-то путь действительно активно открывается и закрывается, когда мы меняем cwd, как закрывающаяся дверь и открывающаяся другая?

Что происходит на компьютере, когда я меняю cwd в программе?

Это может быть не зависит от языка, я не уверен.

1 ответ

Текущий рабочий каталог (по крайней мере, в большинстве операционных систем) является атрибутом процесса, так что да, это более или менее простой атрибут, утверждающий, что "это то, где мы находимся". Поскольку это атрибут процесса, он хранится и управляется ядром ОС.

Его можно изменить произвольно, вызвав, например, os.chdir в python, и оболочка аналогичным образом изменит свой рабочий каталог при каждом запуске встроенной cd команда. И они оба обычно вызывают один и тот же API операционной системы, например, chdir(). Изменение cwd зависит от разрешений файловой системы, поэтому вы можете изменить только рабочий каталог на путь, который действительно существует, и у вас есть права доступа.

Cwd также может участвовать в файловых операциях, поскольку, когда процесс открывает путь к файлу, который не является абсолютным, имя файла будет разрешено относительно cwd процесса.

В системах Unix cwd наследуется от родительского процесса, так как у cwd процесса, который вы запускаете из оболочки, будет свой cwd в каталог, в котором вы находитесь при запуске процесса (а не, например, каталог исполняемого файла, который вы запускаете)).

Другие вопросы по тегам