Unixシステムには/dev/stdin、/dev/stdout、/dev/stderrがありませんか? [コピー]

Unixシステムには/dev/stdin、/dev/stdout、/dev/stderrがありませんか? [コピー]

質問に対する私の答え、そして彼へのコメントが私を読んだ。基本定義のPOSIX適合部分POSIX準拠が実際に必要かどうかを確認してください/dev/stdin/dev/stdout/dev/stderr

彼らはそうではないことがわかりました:

システムは非標準拡張を提供できます。これはPOSIX.1-2008では不要な機能であり、以下を含むことができますが、これに限定されません。 [...]特殊属性(例:と)を持つ追加の/dev/stdin文字/dev/stdout特殊/dev/stderrファイル

私が知る限り、これはただこの文書は規格に記載されています。

私はそれを実装していない1つの「システム」(実際には環境)にのみアクセスでき、それはWindowsのMinGWです(/dev私が知っている限りはまったくありません)。私が知る限り、すべての無料のUniceには、Windows用の新しいLinux環境であるCygwinとDarwin / macOSが含まれています。

私は商業ユニセスについてよく知りません。

/dev/stdin/dev/stdoutおよび/dev/stderrファイルシステムのファイルを実装していないPOSIXシステム、Unix、または今日でもまだ存在するいくつかのUnixのような環境がありますか?

ベストアンサー1

/dev/stdin、/dev/stdout、/dev/stderr をファイルシステムのファイルとして実装しない POSIX システム、Unix、または Unix のような環境は、今日もまだ存在していますか?

はい、少なくとも以下の例のシステムによると、そうです。

私はこのシステムの専門家ではありませんが、AIX 6.1ではWikipediaが次のように主張しています。

The Open GroupのUNIX 03規格(https://en.wikipedia.org/wiki/IBM_AIX)

これらのファイル記述子は、私がアクセスできるインストールでは実装されていないようです。ご覧のとおり、bashを使用すると、リダイレクト目的で実際に存在するかのように動作します。

$ uname -s
AIX
$ echo $SHELL
/usr/bin/ksh
$ ls -al /dev/stdin
ls: 0653-341 The file /dev/stdin does not exist.
$ ls -al /dev/stdout
ls: 0653-341 The file /dev/stdout does not exist.
$ ls -al /dev/stderr
ls: 0653-341 The file /dev/stderr does not exist.
$ echo foo >/dev/stderr
The file access permissions do not allow the specified action.
ksh: /dev/stderr: 0403-005 Cannot create the specified file.
$ bash
bash-4.2$ ls /dev/stderr
ls: 0653-341 The file /dev/stderr does not exist.
bash-4.2$ echo foo >/dev/stderr
foo

他のコメント者が述べたように、次の質問もいくつかの興味深い情報を提供します。

おすすめ記事