2

fd リーク中に、ファイル記述子の上限に達している間に名前変更呼び出しが失敗したことに気付きました。残念ながらエラーコードはありません。

ファイル記述子の欠如が名前変更の失敗に関連している可能性はありますか?

rename() の実装を見る限り、link() システム コールが使用されています。fdは必要ですか?

使用される名前変更の実装は、\glibc-2.17\sysdeps\posix\ からのものです。

4

2 に答える 2

2

このプログラムをコンパイルしました:

#include <stdio.h>

int main()
{
    rename("a", "a1");
}

実行可能ファイルで実行straceされました。初期化コードが完了すると、次のことが起こります。

rename("a", "a1")                       = 0
exit_group(0)                           = ?

openつまり、新しいファイル記述子へのシステム コールはありません。

于 2013-03-13T10:11:18.697 に答える
1

の障害モードはrename、man ページに明確にリストされています。

http://www.manpagez.com/man/2/rename/

開いているファイルが多すぎるという問題については言及されていません。

于 2013-03-13T10:09:56.857 に答える