フォルダーの名前を、いくつかのファイルを含む既存のフォルダーに変更しようとするとどうなりますか
元:
フォルダー D1 には、f1 ファイルを含む別のフォルダー D2 と、f2 ファイルを含む D3 があり、d2-->D3 の名前を変更しようとすると、
既存の d3 を削除して名前を変更しようとすると、動作がどのようになりますか、または奇妙な動作
フォルダーの名前を、いくつかのファイルを含む既存のフォルダーに変更しようとするとどうなりますか
元:
フォルダー D1 には、f1 ファイルを含む別のフォルダー D2 と、f2 ファイルを含む D3 があり、d2-->D3 の名前を変更しようとすると、
既存の d3 を削除して名前を変更しようとすると、動作がどのようになりますか、または奇妙な動作
「parsifal」が回答したように、rename()のドキュメントは、たとえばhttp://pubs.opengroup.org/onlinepubs/007904875/functions/rename.htmlにあります。
パルシファルによる回答では重要な詳細が省略されているため、ここに独自の回答を追加します。
新しい名前が既存のディレクトリにある場合は、空である必要があります ディレクトリ。
errno番号のリストには、
[EEXIST]または[ENOTEMPTY] newで指定されたリンクは、空のディレクトリではないディレクトリです
したがって、newが空でないディレクトリを指している場合、rename()は-1を返し、errnoはEEXISTまたはENOTEMPTYに設定され、変更は行われません。
POSIX ドキュメントはオンラインで入手できます。質問を Google で検索すると、http: //pubs.opengroup.org/onlinepubs/007904875/functions/rename.htmlに移動します。
new 引数で指定されたディレクトリが存在する場合、そのディレクトリは削除され、古い名前が新しい名前に変更されます。