Возьмите стандартный ввод / вывод запущенного процесса под FreeBSD / macOS

В Linux я часто использую /proc/<pid>/fd/[0,1,2] для доступа к std[in,out,err] любого запущенного процесса.

Есть ли способ добиться того же результата в FreeBSD и / или macOS?

  • Как обойти локальный кеш youtube?
  • Верхняя команда OSX показывает 5, работающих на четырехъядерном ядре
  • Ошибка с сертификатами fetchmail и SSL
  • + или @ после запуска 'ls -al'
  • Почему блокирование доменов / etc / hosts после добавления заблокированных сайтов через запуск?
  • Нужен ли мне дистрибутив Linux для изучения командной строки или достаточно ли OS X?
  • Как я могу объяснить, почему процесс ждет?
  • О взаимосвязи между инициализацией оболочки и настольными приложениями после «графического входа»
  • 2 Solutions collect form web for “Возьмите стандартный ввод / вывод запущенного процесса под FreeBSD / macOS”

    См. Эту ссылку StackOverflow для ответа, основанного на dtrace. Я тестировал его на FreeBSD, и он отлично работает:

      capture() { sudo dtrace -p "$1" -qn ' syscall::write*:entry /pid == $target && arg0 == 1/ { printf("%s", copyinstr(arg1, arg2)); } ' } 

    procfs также доступен во FreeBSD, но с man-страницы кажется, что fd не реализован. Procfs используется только для совместимости с FreeBSD для Linux.

    Собственная замена procfs на FreeBSD – это procstat, который вы можете использовать с параметром -f для получения дескриптора файла:

     procstat -a -f 

    Другим встроенным инструментом для определения активных файлов является fstat . Помните -m для файлов с отображением памяти, если это необходимо.

     fstat -m 

    Если вам нравится работать через файловую систему, у нас есть devfs, который предоставляет fdescfs, и вы можете получить доступ к fd в соответствии с запросом.

     ls /dev/fd 

    Пример:

     echo -n Hello > hello.txt echo " World!" | cat hello.txt /dev/fd/0 

    Если вы хотите что-то, что переносится через систему на Mac, – тогда вы можете использовать инструмент lsof (LiSt Open Files), который доступен как пакет .

    Если переносимость вызывает беспокойство, вы должны прочитать « Переносимость ссылок файловых дескрипторов» . Он охватывает все базы.

    Interesting Posts

    Где сказано, как вы получаете ключ NUMLOCK по умолчанию для консоли GUI?

    RHEL: создание стабильных имен для сетевых интерфейсов

    Solaris 11_3 Установка на LDom через «telnet localhost 5000»

    udisksctl монтирует другой подвыбор уже установленного раздела btrfs

    полнофункциональный USB-адаптер WLAN

    Зачем использовать superflous dash (-) для передачи флажков опций в tar?

    nmcli freedesktop DBus предупреждения и ошибки

    Проблема с прохождением пути, содержащего пробелы и скобки

    xfce каждое окно на панели мониторов

    Почему заполнение bash символической ссылки отличается от каталога?

    Правильный синтаксис для использования awk в сочетании с другой командой внутри xargs sh -c

    В Gnu Emacs как настроить глобальный ключ для переключения панели меню?

    Различия между sed на Mac OSX и другим «стандартным» sed?

    mutt: привязать CTRL + c к прерыванию (CTRL + g)

    Как я могу объединить нераспределенный раздел с расширенным разделом?

    Linux и Unix - лучшая ОС в мире.