>"を使用すると、bashはO_APPENDでファイルを開くことができますか?">

Linuxで">>"を使用すると、bashはO_APPENDでファイルを開くことができますか?

Linuxで>"を使用すると、bashはO_APPENDでファイルを開くことができますか?">

使用すると、echo 1234 >> some-file文書に出力が追加されることが示されています。

私の考えでは、some-fileが存在しない場合、O_CREATは新しいファイルを生成します。使用される場合、>O_TRUNC は既存のファイルを切り捨てます。

場合>>:ファイルがO_WRONLY(またはO_RDWR)で開き、O_APPENDをシミュレートして書き込み操作を終了して完了しようとしましたか?それともファイルがO_APPENDで開かれ、カーネルが追加が発生するかどうかを確認しますか?

出力ファイルがNFSマウントポイントから出ると、コンソールプロセスはechoによって挿入されたいくつかのタグを上書きし、NFS文書によると、O_APPENDはサーバーでサポートされていないため、クライアントカーネルがそれを処理する必要があるため、この質問をします。保存プロセスはO_APPENDを使用しているようですが、>>Linuxのbashについてはよくわからないので、ここで質問します。

ベストアンサー1

私はこれを実行しました:strace -o spork.out bash -c "echo 1234 >> some-file"あなたの問題を特定するために。これが私が見つけたものです:

open("some-file", O_WRONLY|O_CREAT|O_APPEND, 0666) = 3

コマンドを実行しているディレクトリに「some-file」というファイルはありませんecho

おすすめ記事