Quando eu redireciono para um “tty”, onde ele realmente entra nesse “tty”, é “stdout” ou “stderr”

0

Quando executo um comando como:

echo "Hello" > tty/pts/2

Ele imprimirá a mensagem nesse terminal . É redirecionado para stdout ou stderr desse tty ?

    
por Surya Ganesh Nalamati 13.06.2016 / 16:27

3 respostas

0

Presumivelmente, seu comando não está certo; Da forma como está, ele salvará a string "Hello" em um arquivo chamado 2 , ou seja, tty/pts/2 (se os diretórios intermediários existirem).

Talvez você quisesse dizer:

echo "Hello" > /dev/pts/2

que enviará a string "Hello" para o 2º pseudo-terminal.

Agora, o STDIN, STDOUT e STDERR do processo em execução dentro do terminal estão ligados ao próprio pseudo-terminal, portanto, não é realmente possível destacar o descritor de arquivo do processo em execução no terminal.

Você pode verificar que, em /proc , lendo o descritor de arquivo no shell que está sendo executado dentro de um terminal, você verá que os fluxos padrão são realmente vinculados ao pseudo-terminal.

Para minha zsh em execução no pseudo terminal /dev/pts/46 :

/proc/self/fd% tty
/dev/pts/46

/proc/self/fd% ls -l           
lrwx------ 1 foobar foobar 64 Jun 13 15:07 0 -> /dev/pts/46
lrwx------ 1 foobar foobar 64 Jun 13 15:07 1 -> /dev/pts/46
lrwx------ 1 foobar foobar 64 Jun 13 15:07 2 -> /dev/pts/46
    
por heemayl 13.06.2016 / 16:37
0

Teste simples seria redirecionar stdout e, em seguida, stderr do comando para /dev/null e ver o que acontece.

adminx@L455D:~$ echo "hello" > /dev/pts/22
hello
adminx@L455D:~$ echo "hello" > /dev/pts/22  > /dev/null # no output , stdout gone
adminx@L455D:~$ echo "hello" > /dev/pts/22  2> /dev/null # stderr gone, but stdout shows up
hello

Assim, stdout é o que você vê.

    
por Sergiy Kolodyazhnyy 13.06.2016 / 17:02
0

Nem stdin , stdout e stderr têm significado apenas quando ligados a processos.

    
por user448115 13.06.2016 / 17:29