
Somos informados de que um tty pode controlar no máximo uma sessão e, além disso, que os ttys podem ser controlados para não permitir que grupos de processos em segundo plano dentro de sua sessão controlada escrevam ou leiam a partir dela, sendo os primeiros controlados pela TOSTOP
opção.
No entanto, qual é a posição de outras sessões escrevendo para um tty? Pode ser controlado de alguma forma? Suponha tty1
e tty2
, ambos com shells. Fiquei surpreso que o seguinte comando em shell2
on tty2
...
ls > /dev/tty1
... na verdade produziu a saída de ls
on tty1
, não importa qual TOSTOP
opção foi definida in tty1
. Como shell2
faz parte de outra sessão, imaginei que pudesse ser isso, porque a TOSTOP
opção realmente faz o que deveria ao tentar gravar a partir de um grupo de processos em segundo plano. Alguém poderia me esclarecer o que está acontecendo?
Responder1
A TOSTOP
opção (descrita, por exemplo, emFerramentas elétricas Unix, ouScript csh do Linux indo para suspenso (saída tty) ao executar com & (bg)) refere-se a um shellfundoprocessos. Nesta situação, o primeiro e o segundo plano têm umaconhecidorelação.
No entanto, se o seu processo abriu um terminal, ele (quase sempre) tem permissões sobre ele, e outro processo de sua propriedade (executando em um terminal diferente) que nãonãoter esse relacionamento poderia abrir o mesmo dispositivo e escrever nele.