Io

/dev/stdin、/dev/stdout 和 /dev/stderr 的可移植性如何?

  • April 15, 2018

有時我需要指定標準 IO 流之一的“路徑等效”(stdin, stdout, stderr)。由於我 99% 的時間都在使用 Linux,所以我只是在前面加上/dev/get/dev/stdin等,而這“似乎是做正確的事”。但是,一方面,我一直對這樣的理由感到不安(因為,當然,“它似乎有效”直到它不起作用)。此外,我對這種機動的便攜性沒有很好的理解。

所以我有幾個問題:

  1. 在 Linux 的上下文中,將、和等同於 、 和 是否安全(是/stdin否 ) ?stdout``stderr``/dev/stdin``/dev/stdout``/dev/stderr
  2. 更一般地說,這種等價物是否“足夠便攜”?

我找不到任何 POSIX 參考。

早在其史前時期,它就已在 Linux 上可用。它不是POSIX,儘管如果作業系統中不存在許多實際的 shell(包括 AT&Tkshbash)會模擬它;請注意,此模擬僅適用於 shell 級別(即重定向或命令行參數,而不是 eg 的顯式參數open())。也就是說,它應該以一種或另一種方式在大多數/dev/fd/N商業 Unix 系統上可用(有時它拼寫為各種 integers N,但大多數具有此功能的系統都會像 Linux 和 *BSD 那樣提供符號連結)。

引用自:https://unix.stackexchange.com/questions/36403