0

フォルダーの名前を、いくつかのファイルを含む既存のフォルダーに変更しようとするとどうなりますか

元:

フォルダー D1 には、f1 ファイルを含む別のフォルダー D2 と、f2 ファイルを含む D3 があり、d2-->D3 の名前を変更しようとすると、

既存の d3 を削除して名前を変更しようとすると、動作がどのようになりますか、または奇妙な動作

4

2 に答える 2

2

「parsifal」が回答したように、rename()のドキュメントは、たとえばhttp://pubs.opengroup.org/onlinepubs/007904875/functions/rename.htmlにあります。

パルシファルによる回答では重要な詳細が省略されているため、ここに独自の回答を追加します。

新しい名前が既存のディレクトリにある場合は、空である必要があります
ディレクトリ。

errno番号のリストには、

[EEXIST]または[ENOTEMPTY]
    newで指定されたリンクは、空のディレクトリではないディレクトリです

したがって、newが空でないディレクトリを指している場合、rename()は-1を返し、errnoはEEXISTまたはENOTEMPTYに設定され、変更は行われません。

于 2012-03-15T20:59:37.510 に答える
1

POSIX ドキュメントはオンラインで入手できます。質問を Google で検索すると、http: //pubs.opengroup.org/onlinepubs/007904875/functions/rename.htmlに移動します。

new 引数で指定されたディレクトリが存在する場合、そのディレクトリは削除され、古い名前が新しい名前に変更されます。

于 2012-03-15T20:54:25.300 に答える