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

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

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

  • ssh-copy-id висит с 8192-битным ключом
  • Невозможно выполнить двоичный файл в Mac OS X Lion 10.7.5
  • emacs - вставлять текст из буфера обмена без форматирования
  • vim - «Нажмите ENTER или введите команду для продолжения» сразу после загрузки?
  • Автоматически отключать расширения Linux для Samba mounts
  • Закрыть / убить / скрыть одно окно терминала в bash on 'process complete'
  • sed: вставка текста перед концом раздела <HEAD>
  • Приложения XForwarding из OSX
  • 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), который доступен как пакет .

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

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