Que processo / programa cria / grava o arquivo para o qual a E / S é redirecionada?

1

Ao aprender o SELinux, executei o diretório semanage fcontext -l > fcontext.txt under /root para despejar informações massivas de fcontext em um arquivo. O resultado engraçado é: fcontext.txt foi criado, mas o tamanho dele é 0.

Eu perguntei no canal de IRC # fedora-selinux , um QA do Fedora me disse para tentar mudar o tipo de contexto do SELinux de fcontext.txt para semanage_tmp_t . Funciona finalmente.

Mas o que ainda me confunde é:

Qual processo / programa cria / grava a saída padrão para o arquivo redirecionado? (para que a política do SELinux targetd seja aplicada a esse processo / programa)

  • O shell bash? %código%
  • ou semanage (é um script python)? %código%
  • ou o interpretador - python? %código%

Eu pensei que deveria ser o bash shell, porque o redirecionamento de E / S é controlado pelo shell (certo?), não pelo programa em si. então semanage / python não criou o arquivo diretamente.

    
por LiuYan 刘研 08.06.2011 / 11:30

1 resposta

4

Você está certo: o redirecionamento para fluxos de entrada e saída é feito pelo shell.

Mais detalhadamente, quando você executa um comando através do shell, o seguinte procedimento é executado:

  1. Os garfos do shell criam um novo processo.

  2. O shell recém-criado (shell "filho") aplica redirecionamentos: abre o arquivo especificado como destino de saída (resp. fonte de entrada) e define como o novo fluxo STDOUT (resp. STDIN) (usando o chamada do sistema dup2 .

  3. O shell "child" executa o comando que você pediu para executar, usando o execve (2) chamada de sistema, que substitui o processo do shell por um novo programa.

por 08.06.2011 / 11:32