Где я должен создать файл, чтобы любой процесс мог получить к нему доступ?

Простой psпоказывает только ваши собственные процессы, а не системные процессы или процессы других пользователей. psпозволяет отображать больше процессов, например. ps axили ps -eили ps -A.

ps -aне показывает процесс systemd-resolve, потому что он не связан с терминалом. Подробности см. в man ps.

0
14.02.2021, 01:44
1 ответ

Я бы порекомендовал вам прочитать man 7 hier и /var/run, кажется, то, что вы ищете. Поскольку не так просто собрать эту информацию, прочитав справочные страницы, и, если вы не использовали это раньше, :вы можете получить доступ к данным процесса через файловую систему procfs, а в /proc/$pid/envвы можете получить доступ к набору переменных среды. для вашей программы. Воспользовавшись этим, вы можете различать разные экземпляры.

Однако обратите внимание, что вам нужны правильные права доступа для записи в /var/run, и это обычно архивируется путем правильной установки программ и предпочтительно вашим менеджером пакетов. Если вам нужно более простое решение,который также работает для учетных записей пользователей (!=root )есть другая практика, о которой я знаю :Например, сервер X -вместо этого записывает общие файлы в /tmp. Это может быть альтернативой и для вас. /tmpили /dev/shmобычно являются дополнительными местами, где можно использовать энергозависимую память. Это хорошая практика для таких файлов «состояния», потому что это вызывает меньшую блокировку, например. жесткий диск может выйти из спящего режима, или карта памяти имеет ограниченное количество циклов записи, прежде чем сломается.

Насколько это портативно? Я думаю, что /dev/shmне лучший выбор для систем FreeBSD, другие должны работать, и я совершенно не знаю, как это работает в MacOS. Однако я уверен, что Apple также предоставляет руководство по эксплуатации (7 ).

0
18.03.2021, 22:30

Теги

Похожие вопросы