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

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

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

  • Почему я не могу передать `pwd`` open` на macOS?
  • default wordsize в UNIX / Linux
  • Печать текущей даты / времени с точностью до секунды
  • Значение «l» в «lrwxr-xr-x»?
  • tmux не раскрашивает подсказку PS1
  • Не удалось удалить Root CA (UNIX: операция не разрешена)
  • Как лучше настроить тройную загрузку с MacOS Sierra, Windows 10 и Linux Mint в 2016 году iMac?
  • Каков наилучший способ установки 3 жестких дисков с 3 ОС на один компьютер?
  • 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

    Сохранять коды выхода при захвате SIGINT и тому подобное?

    Как протестировать карту Ethernet?

    Как исправить прерывистые ошибки «Нет места на устройстве» во время mv, когда у устройства достаточно места?

    Владелец sshfs-установленного каталога с разрешением 777 не может открыть его (нет ACL, нет SELinux)

    ноутбук с плохим монитором превратился в сервер: как отключить монитор

    Как уменьшить количество цветов, используемых Gnome

    скрипт, который вызывает сторонний скрипт, который вызывает экран – как отключить экран?

    «gnome-screensaver-command -l» не работает при вызове из '/etc/pm/sleep.d'-script

    Cron vs systemd таймеры

    Git совершает внутри Makefile

    Как я могу показать cd каталог, в который он переключается?

    Как запустить другую установленную систему из Linux?

    В чем смысл (1) на странице руководства?

    Загрузите список веб-страниц в файл и переименуйте их, чтобы избежать перезаписи?

    ffmpeg: reencode и повторно поток сетевого потока с более низким битрейтом

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