Cukup menarik, sepertinya jawabannya mungkin, "Itu tergantung".
Agar jelas, mvditentukan untuk
The mvutilitas akan melakukan tindakan setara dengan rename()
fungsi
The fungsi rename spesifikasi negara:
Ini rename()fungsi setara untuk file biasa dengan yang didefinisikan oleh standar ISO C. Dimasukkannya di sini memperluas definisi itu untuk memasukkan tindakan pada direktori dan menentukan perilaku ketika parameter baru menamai file yang sudah ada. Spesifikasi itu mensyaratkan aksi fungsi menjadi atom.
Tetapi spesifikasi ISO C terbaru untuk rename()negara:
7.21.4.2 renameFungsi
Ringkasan
#include <stdio.h>
int rename(const char *old, const char *new);
Deskripsi
The renameFungsi menyebabkan file yang namanya string ditunjukkan oleh olduntuk selanjutnya dikenal dengan nama yang diberikan oleh string ditunjukkan oleh new. File bernama oldtidak lagi dapat diakses dengan nama itu. Jika file bernama oleh string yang ditunjukkan oleh newada sebelum panggilan ke renamefungsi, perilaku didefinisikan-implementasi.
Kembali
The renamefungsi kembali nol jika operasi berhasil, nol jika gagal, dalam hal jika file ada sebelumnya itu masih dikenal dengan nama aslinya.
Anehnya, perhatikan bahwa tidak ada persyaratan eksplisit untuk atomisitas. Mungkin diperlukan di tempat lain dalam Standar C terbaru yang tersedia untuk umum, tetapi saya belum dapat menemukannya. Jika ada yang dapat menemukan persyaratan seperti itu, suntingan dan komentar lebih dari diterima.
Lihat juga Apakah ganti nama () atomik?
Per halaman manual Linux :
Jika newpathsudah ada, itu akan diganti secara atom, sehingga tidak ada titik di mana proses lain yang mencoba mengakses
newpathakan menemukannya hilang. Namun, mungkin akan ada jendela di mana keduanya oldpathdan newpathmerujuk ke file yang diubah namanya.
Halaman manual Linux mengklaim bahwa penggantian file tersebut adalah atom.
Menguji dan memverifikasi bahwa atomisitas mungkin sangat sulit, jika itu sejauh yang Anda butuhkan. Anda tidak jelas apa yang Anda maksudkan dalam penggunaan "Bagaimana saya bisa memeriksa apakah mv adalah atom". Apakah Anda ingin persyaratan / spesifikasi / dokumentasi yang atomik, atau Anda perlu benar-benar mengujinya ?
Catatan juga, di atas mengasumsikan dua nama file operan berada di sistem file yang sama. Saya tidak dapat menemukan batasan standar pada mvutilitas untuk menegakkan itu.
strace?