GNU/Linux >> Linux Esercitazione >  >> Linux

Quanto sono portatili /dev/stdin, /dev/stdout e /dev/stderr?

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:

  1. Nel contesto di Linux, è sicuro (sì/no) equiparare stdin ,
    stdout e stderr con /dev/stdin , /dev/stdout e
    /dev/stderr ?

  2. 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).


Linux
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. Linux:differenza tra /dev/console , /dev/tty e /dev/tty0?

  3. Come mappare il dispositivo /dev/sdX e /dev/mapper/mpathY dal dispositivo /dev/dm-Z

  4. Come codificare in base64 /dev/random o /dev/urandom?

  5. kernel:disabilitare /dev/kmem e /dev/mem

Come sostituire un disco rigido guasto nel software RAID Linux

tty (/dev/tty ) vs pts (/dev/pts) in Linux

Come Linux usa /dev/tty e /dev/tty0

echo o print /dev/stdin /dev/stdout /dev/stderr

Perché sono necessari < o > per usare /dev/tcp

Differenze tra /dev/sda e /dev/sda1