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.
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
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
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).
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 .