Bagaimanakah os.FileMode Menukar Kebenaran Sebelum Menetapkan Bendera?

Susan Sarandon
Lepaskan: 2024-10-25 04:54:02
asal
303 orang telah melayarinya

How Does os.FileMode Convert Permissions Before Setting Flags?

Bagaimana os.FileMode Menukar Kebenaran Sebelum Menetapkan Bendera

Kebimbangan Asal

Apabila menggunakan os.FileMode berfungsi dengan nombor perlapanan atau perpuluhan, kebenaran fail yang terhasil tidak selalunya kelihatan sepadan dengan tingkah laku yang dijangkakan. Secara khususnya, menghantar nombor perpuluhan (tanpa mendahului sifar) menghasilkan atribut fail yang berbeza daripada melepasi nilai perlapanan.

Logik Penukaran

os.FileMode menerima integer sebagai input dan secara dalaman mewakilinya sebagai integer tidak bertanda 32-bit. Sembilan bit paling tidak ketara sepadan dengan kebenaran fail Unix, manakala baki 12 bit tidak digunakan. Apabila menukar nombor perlapanan kepada integer, spesifikasi bahasa mentafsirkan nombor itu sebagai asas 8 jika ia bermula dengan sifar pendahuluan ("0"). Jika tidak, ia mentafsir nombor sebagai asas 10.

Contoh

Pertimbangkan nombor perlapanan "0700" yang mewakili kebenaran "rwx------".

  • Melalukan "0700" ke os.FileMode akan menghasilkan kebenaran yang betul ditetapkan.
  • Melalui "700" (tanpa mendahului sifar) ke os.FileMode juga akan mengakibatkan kebenaran yang betul ditetapkan, kerana spesifikasi bahasa secara automatik mentafsirkannya sebagai perlapanan kerana ia bermula dengan digit.
  • Melalukan "1274" (perwakilan perpuluhan "0700") ke os.FileMode akan mengakibatkan kebenaran yang salah menjadi ditetapkan. Ini kerana spesifikasi bahasa mentafsirkan "1274" sebagai nombor asas 10.

Nota Tambahan

12 bit yang tidak digunakan dalam os.Perwakilan Mod Fail menunjukkan ciri fail khas. Walau bagaimanapun, ini tidak berkaitan untuk kebenaran fail asas.

Atas ialah kandungan terperinci Bagaimanakah os.FileMode Menukar Kebenaran Sebelum Menetapkan Bendera?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!