file-descriptors

両方のスレッドが同じファイル記述子番号を誤って返す既知のLinuxカーネルのバグはありますか?
file-descriptors

両方のスレッドが同じファイル記述子番号を誤って返す既知のLinuxカーネルのバグはありますか?

O_CREAT を使用する sem_open が、時には EBADF で失敗するマルチスレッドプログラムがあります。これはNXPのARM Linux 4.9.88組み込みデバイスにあります。 再現するのは非常に難しいですが、ファイルを作成するときに2つのスレッドが同じファイル記述子を受け取るように見えるstrace状況を見つけました(1つはsem_open内のopenat()のものであり、もう1つはスレーブパイプライン2によって返された読み取り終わり)。ファイルとパイプラインが同時に存在します。 strace(pid 266はsem_openを呼び出すスレッ...

Admin

STDIN、STDOUTなどに関連するファイル記述子を識別する方法
file-descriptors

STDIN、STDOUTなどに関連するファイル記述子を識別する方法

私はこれを知らせるいくつかのコマンドや環境変数を覚えているようです。たとえば、私は基本的に端末で何かを実行したいと思います。 echo $STDIN /dev/tty echo $STDOUT /dev/tty fdescribe 0 or fdescribe /dev/stdin /dev/tty fdescribe 1 or fdescribe /dev/stdout /dev/tty ただし、スクリプトまたはサブプロセスで実行できます。 ...

Admin

ファイル記述子47は何に使用されますか?
file-descriptors

ファイル記述子47は何に使用されますか?

走りながら気づいた ls /proc/self/fd 次の結果が表示されます。 0 1 2 3 47 明らかに、および0は1それぞれ、およびの記述子であり、2ディレクトリにアクセスするために使用される記述子です。stdinstdoutstderr3ls しかし、何ですか47?実行中の出力は次のlsとおりです(特定の項目ではなく)、シェルから渡された項目でなければなりません。cat $ cat /proc/self/fd/47 cat: /proc/self/fd/47: Permission denied # example of runnin...

Admin

Bash自体の出力はどこに行きますか?
file-descriptors

Bash自体の出力はどこに行きますか?

sleep 100&スクリプトの場合は、コマンドの後にシェルに表示される「[1] 00000」メッセージをリダイレクトしたいと思います。もう必要ありませんが、この問題を解決している間、Bash自体の出力はどこに行くのか考え始めました。なぜbash > test、bash &> testそれともbash | [some program]機能しませんか?ファイル記述子1と2は、単に端末に書き込まれるファイル記述子ですか?それでは、bashや他のプログラムがユーザーに印刷したい場合、どのように標準出力をバイパスしますか? ...

Admin

非標準のファイル記述子を使用してマップされたファイルを介してファイルを配列に読み込む方法は?
file-descriptors

非標準のファイル記述子を使用してマップされたファイルを介してファイルを配列に読み込む方法は?

mapfile -t -u 7 arr < textfilebash: mapfile: 7: invalid file descriptor: Bad file descriptor そのような記述子を許可するファイルを1行ずつ読み取るためのより詳細な方法を教えてください。 read_w_while() { while IFS="" read -u 7 -r l || [[ -n "${l}" ]]; do echo "${l}" done 7< textfile 標準記述子は0広く使用されています。そのような記述子を使用すると、スクリプ...

Admin

ファイル記述子による「匿名」シンボリックリンクのタイムスタンプの変更
file-descriptors

ファイル記述子による「匿名」シンボリックリンクのタイムスタンプの変更

このfutime*関数系列の実装は次のとおりです。 utimensat(fd, NULL, time, 0) そしてlutime*それらは使用されます utimensat(AT_FDCWD, path, time, AT_SYMLINK_NOFOLLOW) 私の推測は、「シンボリックリンクを参照するファイル記述子を取得する」セクションにあります。https://man7.org/linux/man-pages/man7/symlink.7.htmlそれだけです: int fd = open(path, O_PATH | O_NOFOLLOW); utim...

Admin

開いたファイル記述子のファイル名の作成
file-descriptors

開いたファイル記述子のファイル名の作成

ファイルシステムにファイルがあります。open(2)ファイルのファイル記述子を取得する関数を使用してファイルを開いています。 それではファイルを削除しましょう。ただし、ファイルディスクリプタはまだあるため、最後のファイルディスクリプタが閉じられるまでファイルシステムは自分のファイルのファイル割り当てを削除しないため、問題なくファイルを読み書きできます。 ただし、ファイルを削除した後でもファイルディスクリプタが残っている間は、そのファイルディスクリプタにファイル名を再生成(再バインド)できますか?それでは、ファイルがファイルシステムに再表示され、ファイルディス...

Admin

Linuxでは、標準の入力、出力、およびエラーファイル記述子はいつどこで初めて開きますか?
file-descriptors

Linuxでは、標準の入力、出力、およびエラーファイル記述子はいつどこで初めて開きますか?

stdin、stdout、stderr(fds)はどこにありますか?最初開いている?カーネルで作ったのですか?シンボリックリンク/dev/std{in,out,err}はいつどこで作成されましたか?これを行うコードはどこにありますか? 私はそれがLinuxカーネルソースにあると仮定していますが、archlinux 6.5.3-arch1-1 Linuxカーネルのgithubリポジトリで検索した後でもどこで発生するのかわかりません。 編集:この質問に反対票を投げたら、私がもっとうまくいくように理由を説明してください。この質問は本当に知りたいです。答えを見つける...

Admin

単に `| cat -`を使用すると、ファイル記述子エラーが発生します。
file-descriptors

単に `| cat -`を使用すると、ファイル記述子エラーが発生します。

これは動作するdiffコマンドです: $ diff -u <(echo 'foo:bar:baz' | tr : "\n") <(echo 'foo:baz' | tr : "\n") --- /dev/fd/11 2023-08-30 13:11:50 +++ /dev/fd/13 2023-08-30 13:11:50 @@ -1,3 +1,2 @@ foo -bar baz からパイプラインを追加すると、diffすべてのコマンドが次のエラーで失敗します。 $ diff -u <(echo 'foo:bar:baz' | tr...

Admin

IO(docker)をブロックせずにstdinにデータがあるかどうかを確認するには?
file-descriptors

IO(docker)をブロックせずにstdinにデータがあるかどうかを確認するには?

を実行するとecho this | docker run -i alpine cat取得しますthis。 を実行するとstdinを読み取っdocker run -i alpine catたため、端末はブロックされますが、catそこには何もありません。 開いているファイル記述子を確認できます。を実行すると、docker run -i alpine ls -lA /proc/1/fd標準出力に次のように表示されます。 lr-x------ 1 root root 64 Aug 9 13:45 0 -> pipe:[10...

Admin

ファイル記述子の数が異なる
file-descriptors

ファイル記述子の数が異なる

私はここで基本的なものを見逃していると確信しています。 私が実行しているシステムでは: cat /proc/sys/fs/file-nr 2240 0 763924 同じシステムで次のことを行った場合: sum=0; for pid in /proc/[0-9]*; do fd=$(ls $pid/fd | wc -l); sum=$((sum + fd)); done; echo $sum 結果ははるかに少ないです872。どうですか?誰かがこれを説明できますか?ありがとうございます。 ...

Admin

限界。
file-descriptors

限界。

章3.6 リダイレクトBashのマニュアルは次のように言います: 9より大きいファイル記述子を使用するリダイレクトは、シェルで内部的に使用されるファイル記述子と競合する可能性があるため、慎重に使用する必要があります。 しかし、章2.7 リダイレクト私が知っている限り、POSIX仕様には数量制限は記載されていませんか? シェルによってどのような制限を知っておくべきですか?ファイル記述子番号がすでにシェルで内部的に使用されていることを確認してスキップできますか?使用できるファイル記述子の最大数はどれくらいですか? ...

Admin

シェルの一時シンボリックリンク - 「名前付きプロセスの置き換え」 - ディスクにコピー/シンボリックリンクを作成せずにファイル名を変更しますか?
file-descriptors

シェルの一時シンボリックリンク - 「名前付きプロセスの置き換え」 - ディスクにコピー/シンボリックリンクを作成せずにファイル名を変更しますか?

.eml拡張子を持たないファイルを電子メールファイルとして開く代わりに、Thunderbirdは新しい電子メールの作成を開始して添付ファイルとして追加します。スクリプトでThunderbirdを使用するために、私は「一時的に名前を変更して」Thunderbirdでfile開きfile.eml(編集用ですが、少なくとも読み取り用)、ディスクに何も保存せずに閉じる方法を探しています。コースの記憶。 ファイルをコピーするか、一時的な場所にファイルへのシンボリックリンクを作成することができます。プロセス置換を使用するエレガントな方法がたくさんあります。またはここに文...

Admin