Não, /dev/stdin
e /dev/stdout
é o dispositivo errado. Estes não são dispositivos terminais, são alias para entrada e saída padrão, respectivamente. Entrada padrão e saída padrão são, por definição, descritores de arquivo que os aplicativos esperam que sejam abertos e tenham um significado convencional (descritor de arquivo 0 e 1 respectivamente, há também 2 que são erro padrão). Dispositivos como /dev/stdin
e /dev/stdout
são úteis quando um aplicativo requer um nome de arquivo, mas o usuário do aplicativo deseja que ele acesse um descritor de arquivo específico, em vez de abrir algum arquivo. Dependendo da variante unix, eles podem até não ser arquivos de dispositivo; por exemplo, no Linux, eles são links simbólicos para/proc/self/fd/0
e amigos, e esses são, por sua vez, links simbólicos "mágicos" para qualquer arquivo que o processo já tenha aberto no descritor de arquivo.
Alterar as permissões de /dev/stdin
e /dev/stdout
só mudaria o que acontece quando esses nomes de arquivo são usados explicitamente. Isso não afeta nada relacionado ao terminal e não afeta o uso normal de entrada e saída padrão, pois as permissões são importantes apenas ao abrir um nome de arquivo específico.
O que mesg
faz é alterar as permissões do terminal de controle do processo . Para um aplicativo que está sendo executado em um terminal, o terminal é aberto na entrada padrão, na saída padrão e no erro padrão (descritores de arquivo 0, 1 e 2). Você pode usar o comando tty
para ver qual é o dispositivo terminal. mesg n
é equivalente a chmod g-w "$(tty)"
e mesg y
é equivalente a chmod g+w "$(tty)"
.
mesg n
pode usar permissões para afetar os futuroswrite
somente porquewrite
ainda não possui o terminal aberto.