why am I getting hangups
Você não está recebendo "restrições" de cat(1)
e tail(1)
, eles estão apenas bloqueando a leitura. cat(1)
aguarda a entrada e imprime assim que vê uma linha completa:
$ cat /dev/stdout
foo
foo
bar
bar
Aqui eu digitei foo
Entre bar
Digite CTRL - D .
tail(1)
aguarda a entrada e imprime apenas quando consegue detectar EOF
:
$ tail /dev/stdout
foo
bar
foo
bar
Aqui eu digitei novamente foo
Digite bar
Digite CTRL - D .
or error messages
O Vim é o único que apresenta um erro. Ele faz isso porque executa stat(2)
against /dev/stdout
, e acha que não tem o conjunto% bit_de% definido.
S_IFREG
é um arquivo, mas não um arquivo regular . De fato, há alguma dança no kernel para dar uma entrada no sistema de arquivos. No Linux:
$ ls -l /dev/stdout
lrwxrwxrwx 1 root root 15 May 8 19:42 /dev/stdout -> /proc/self/fd/1
No OpenBSD:
$ ls -l /dev/stdout
crw-rw-rw- 1 root wheel 22, 1 May 7 09:05:03 2015 /dev/stdout
No FreeBSD:
$ ls -l /dev/stdout
lrwxr-xr-x 1 root wheel 4 May 8 21:35 /dev/stdout -> fd/1
$ ls -l /dev/fd/1
crw-rw-rw- 1 root wheel 0x18 May 8 21:35 /dev/fd/1