Problema de entrada padrão do Linux

0

Eu sou novo no Linux. E estou usando o Red Hat Enterprise Versão 5. Existe um programa ruby que usa entrada padrão como entrada (por exemplo, a entrada do processo do programa Ruby a partir da entrada padrão). Eu acho que a entrada padrão deve ser teclado, correto?

Então, eu acho que outros tipos de entrada (entrada não-padrão) não devem funcionar (isto é, o programa ruby não deve ser capaz de ler entradas não-padrão), mas na verdade eu tentei usar pipe works, Estou tão confuso porque acho que pipe deve ser algum outro tipo de entrada - além de entrada padrão, por que poderia funcionar? Ou seja, colocar o texto "123" em abc.txt com pipe, poderia alcançar o mesmo resultado que usar o teclado como entrada para digitar "123" para o programa ruby.

Aqui está a amostra que funciona e me deixa confuso,

cat abc.txt | ~ / test / rubysrc / foo.rb

obrigado antecipadamente, George

    
por George2 15.05.2010 / 16:57

4 respostas

2

Use $stdin.isatty se você quiser evitar a entrada sem terminal. Observe que existem maneiras de contornar isso se o usuário estiver determinado o suficiente.

    
por 15.05.2010 / 17:11
2

O Pipe funciona como um "redirecionador" de STDOUT (que cat abc.txt ) para STDIN (que aceita o script foo.rb .

IMHO isso pertence em superuser.com

    
por 15.05.2010 / 17:10
2

Na verdade, o pipe conecta o stdout do processo à esquerda com o stdin do processo correto, então faz sentido que isso funcione. Veja também link .

(E sim, isso provavelmente deve ir para superuser.com).

    
por 15.05.2010 / 17:11
2

Os canos funcionam conectando entrada e saída padrão de um processo a outros processos, simulando um usuário digitando em seu teclado. Isso permite que os processos sejam conectados sem precisar se conhecerem ou serem usados diretamente pelo usuário em seu teclado.

A Wikipédia tem um .

    
por 15.05.2010 / 17:11