GNU/Linux >> Linux の 問題 >  >> Linux

/ dev / stdin、/ dev / stdout、および/ dev / stderrはどの程度移植可能ですか?

場合によっては、標準IOストリームの1つ(stdin)の「パス相当」を指定する必要があります。 、stdoutstderr )。 Linuxで作業する時間の99%は、/dev/の前に付けるだけです。 /dev/stdinを取得するには 、など、この「 正しいことをするために」。しかし、1つには、私は常にそのような論理的根拠に不安を感じていました(もちろん、それが機能しないまでは「機能しているように見える」ためです)。さらに、この操作がどれほどポータブルであるかについては、私にはよくわかりません。

だから私はいくつか質問があります:

  1. Linuxのコンテキストでは、stdinと同等にするのは安全ですか(はい/いいえ)? 、
    stdout 、およびstderr /dev/stdinを使用 、/dev/stdout 、および
    /dev/stderr

  2. より一般的には、この同等性は「適切にポータブル 「?

POSIXリファレンスが見つかりませんでした。

承認された回答:

Linuxで利用可能になり、先史時代に戻りました。
そうではありません POSIX、ただし多くの実際のシェル(AT&T kshを含む) およびbash )OSに存在しない場合はシミュレートします。このシミュレーションはシェルレベルでのみ機能することに注意してください(つまり、リダイレクトまたはコマンドラインパラメータであり、open()などの明示的な引数としては機能しません。 )。
とはいえ、ほとんどで利用できるはずです。 商用Unixシステム、何らかの方法で(/dev/fd/Nと綴られることもあります) さまざまな整数の場合N 、ただし、それを備えたほとんどのシステムは、Linuxおよび*BSDが提供するようにシンボリックリンクを提供します。


Linux
  1. / dev/randomを使用してLinuxでランダムパスワードを生成する方法

  2. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  3. /dev/dm-Z デバイスから /dev/sdX および /dev/mapper/mpathY デバイスをマップする方法

  1. カーネル:/dev/kmem と /dev/mem を無効化

  2. Linux が /dev/tty と /dev/tty0 を使用する方法

  3. Linux で /dev/random を /dev/urandom にリンクするのは間違っていますか?

  1. Linux:/ dev / console、/ dev / tty、/ dev / tty0の違いは?

  2. echo または print /dev/stdin /dev/stdout /dev/stderr

  3. /dev/tcp を使用するために < または > が必要な理由