上の読み取り/書き込み権限を。変更は、私はLinuxのCプロジェクトに取り組んでいると私はファイルディスクリプタでの作業のトラブルを抱えているファイルディスクリプタ
私は孤立ファイル記述子を持っています(ファイルはopen()されてからunlink()されていますが、fdはまだ有効です)、書き込み専用です。元のバッキングファイルには完全なアクセス許可(S_IRUSR | S_IWUSR | S_IRGRP | S_IROTHで作成)がありましたが、ファイルはO_WRONLYで開かれていました。ファイルディスクリプタを複製し、コピーをO_RDWRに変更することは可能ですか?
psudoコード:事前に
//open orphan file
int fd = open(fname, O_WRONLY, ...)
unlink(fname)
//fd is still good, but I can't read from it
//...
//I want to be able to read from orphan file
int fd2 = dup(fd)
//----change fd2 to read/write???----
ありがとう! -Andrew
'fcntl(fd、F_SETFL、fcntl(fd、F_GETFL)| O_RDWR))' *は、manページが特に動作しないと言っている点を除いて、それは事と同様です。私は、カーネルにはこれが不可能であることを「必要とする」何らかの理由があると思いますか? – aschepler
なぜあなたはそれを読む予定がある場合wronlyモードでそれを開きますか? –
また、適切なフラグを使用して再度開くこともできます。 – jweyrich