AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 452844
Accepted
Draconis
Draconis
Asked: 2018-07-01 17:42:59 +0800 CST2018-07-01 17:42:59 +0800 CST 2018-07-01 17:42:59 +0800 CST

Por que não escrever para stdin?

  • 772

De acordo com esta resposta , stdin, stdout, e stderrestão todos inicialmente conectados ao mesmo lugar (o mesmo que /dev/tty), e a convenção de ler stdine escrever para stdoute stderré apenas isso: uma convenção.

Nesse caso, por que ter fluxos stdine separados stdout, em vez de combiná-los em um único?

io-redirection stdout
  • 2 2 respostas
  • 1327 Views

2 respostas

  • Voted
  1. Kusalananda
    2018-07-01T21:37:46+08:002018-07-01T21:37:46+08:00

    Ter um fluxo de entrada separado de um fluxo de saída torna mais fácil para um programa escrever sua saída ao mesmo tempo em que está lendo sua entrada.

    Torna mais fácil permitir que um programa escreva sua saída em outro lugar do que de onde veio sua entrada, usando redirecionamentos ou pipes.

    Além disso, além de ser apenas uma convenção , os três fluxos de E/S padrão também são padrão . Veja, por exemplo , a seção sobre fluxos de E/S padrão na parte Interfaces do sistema do padrão POSIX.

    A justificativa para essa seção diz:

    Embora o padrão ISO C garanta que, na inicialização do programa, stdin esteja aberto para leitura e stdout e stderr estejam abertos para gravação, essa garantia é condicionada (como todas as garantias feitas pelos padrões ISO C e POSIX) ao programa ser executado em um ambiente em conformidade. Programas executados com descritor de arquivo 0 não aberto para leitura ou com descritor de arquivo 1 ou 2 não aberto para escrita são executados em um ambiente não conforme. Os criadores de aplicativos são avisados ​​[...] para não executar um utilitário padrão ou um aplicativo em conformidade com o descritor de arquivo 0 não aberto para leitura ou com o descritor de arquivo 1 ou 2 não aberto para gravação.

    • 1
  2. Best Answer
    ctrl-d
    2018-07-01T23:32:21+08:002018-07-01T23:32:21+08:00

    Um ponteiro FILE como stdin, stdout e stderr só pode conter um descritor de arquivo subjacente. Assim, se você tiver uma configuração de pipeline como:

    ls | grep foo | less
    

    Então stdin, stdout e stderr do grep têm diferentes fileno()s porque existem dois pipe()s conectados. Assim, deve haver arquivos diferentes também.

    • 1

relate perguntas

  • Como dividir uma saída em dois arquivos com grep?

  • Como salvar uma saída do airodump-ng em um arquivo?

  • daqui a algum tempo faça algo (e talvez também mostre o resultado no console)

  • Ecoar algo em segundo plano, mas vê-lo mesmo se você reiniciou ou teve um corte de energia?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve