Occasionalmente ho bisogno di specificare un "percorso equivalente" di uno dei flussi IO standard (stdin , stdout , stderr ). Poiché il 99% delle volte lavoro con Linux, antepongo semplicemente /dev/ per ottenere /dev/stdin , ecc., e questo “sembra fare la cosa giusta”. Ma, per prima cosa, sono sempre stato a disagio per una tale logica (perché, ovviamente, "sembra funzionare" finché non funziona). Inoltre, non ho il buon senso di quanto sia portatile questa manovra.
Quindi ho alcune domande:
-
Nel contesto di Linux, è sicuro (sì/no) equiparare
stdin,stdoutestderrcon/dev/stdin,/dev/stdoute/dev/stderr? -
Più in generale, questa equivalenza è "sufficientemente portatile". “?
Non sono riuscito a trovare alcun riferimento POSIX.
Risposta accettata:
È stato disponibile su Linux nella sua preistoria.
Non lo è non POSIX, sebbene molte shell effettive (incluso AT&T ksh e bash ) lo simulerà se non è presente nel sistema operativo; nota che questa simulazione funziona solo a livello di shell (cioè reindirizzamento o parametro della riga di comando, non come argomento esplicito per es. open() ).
Detto questo, dovrebbe essere disponibile sulla maggior parte sistemi Unix commerciali, in un modo o nell'altro (a volte si scrive /dev/fd/N per vari interi N , ma la maggior parte dei sistemi con questo fornirà collegamenti simbolici come fanno Linux e *BSD).