Какой процесс / программа создает / записывает файл, к которому перенаправляется ввод-вывод?

При изучении SELinux я выполнил semanage fcontext -l > fcontext.txt /root чтобы сбрасывать массивную информацию fcontext в файл. Смешной результат: fcontext.txt был создан, но его размер равен 0.

Я спросил в # IRC-канале fedora-selinux , Fedora QA сказал мне попробовать изменить тип контекста SELinux fcontext.txt на semanage_tmp_t . Это работает наконец.

  • Что делать с циклической зависимостью между двумя пакетами в Fedora?
  • Почему grep обрабатывает строку ebug 'по-разному?
  • несоответствие версии kmod-VirtualBox в Fedora 22
  • Почему порядок результатов подстановки может отличаться при использовании с терминалом или с perl?
  • получить части строки, используя сценарий оболочки
  • Fedora 18 гость в VirtualBox 4.2: Как назначить статический адрес IPv4 для гостя независимо от активного интерфейса ethernet на хосте
  • Но меня все еще путают:

    Какой процесс / программа создает / записывает стандартный вывод в перенаправленный файл? (так что политика SELinux targetd должна применяться к этому процессу / программе)

    • Оболочка bash? /bin/bash
    • или семанаж (это скрипт python)? /usr/sbin/semanage
    • или интерпретатор – питон? /usr/bin/python

    Я думал, что это должна быть оболочка bash, потому что перенаправление ввода-вывода контролируется оболочкой (правильно?), А не самой программой. поэтому semanage / python не создавал файл напрямую.

  • Какие пакеты необходимы для установки vim на Fedora?
  • Как программы с программным обеспечением с оболочкой уравновешивают скорость вывода / ввода?
  • Почему vim не открывается на своем экране?
  • Почему команда ls медленно прерывает работу в каталоге NFS с большим количеством файлов?
  • git diff - прослушивание нажатия клавиши
  • Debian: umount / media / usb0: «Операция не разрешена»
  • One Solution collect form web for “Какой процесс / программа создает / записывает файл, к которому перенаправляется ввод-вывод?”

    Вы правы: перенаправление для входных и выходных потоков выполняется оболочкой.

    Более подробно, когда вы выполняете команду через оболочку, запускается следующая процедура:

    1. Оболочка вилки для создания нового процесса.

    2. Вновь созданная оболочка («дочерняя» оболочка) применяет перенаправления: она открывает файл, указанный как конечный результат (источник входного сигнала), и устанавливает его как новый поток STDOUT (соответственно STDIN) (используя системный вызов dup2 ).

    3. В «дочерней» оболочке выполняется команда, которую вы попросили запустить, используя системный вызов execve (2) , который заменяет процесс оболочки новой программой.

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