Fungsi fungsi akses linux c adalah untuk menentukan kebenaran akses bagi fail Sintaks fungsi ini ialah "int access(const char * pathname, int mode);", di mana parameter "pathname". mewakili fail yang perlu dikesan.
Persekitaran pengendalian tutorial ini: sistem linux5.9.8, komputer Dell G3.
Bagaimana untuk menggunakan fungsi akses linux c?
akses linux C
【1】Fungsi
Tentukan kebenaran akses fail
【2】Fail pengepala
#include <unistd.h>
【3】Takrifan fungsi
int access(const char * pathname, int mode);
【4】Penerangan Parameter
Nama Laluan: Nama laluan fail yang perlu dikesan
Mod: Apabila parameter ialah 0, ia bermakna menyemak kewujudan fail Jika fail wujud, 0 dikembalikan Jika ia tidak wujud, -1 dikembalikan. Fungsi ini juga boleh menyemak atribut fail lain:
06 Semak kebenaran baca dan tulis
04 Semak kebenaran baca
02 Semak kebenaran menulis
01 Semak kebenaran pelaksanaan
00 Semak kewujudan fail
【5】Nilai pulangan
Jika semua kebenaran yang hendak disemak telah melepasi cek, maka nilai 0 dikembalikan, menunjukkan kejayaan selagi satu kebenaran dilarang, -1 dikembalikan, menunjukkan kegagalan.
【6】Penerangan Fungsi
Access() akan menyemak sama ada fail sedia ada boleh dibaca/ditulis.
Terdapat beberapa kombinasi mod parameter, R_OK, W_OK, X_OK dan F_OK.
R_OK, W_OK dan X_OK digunakan untuk menyemak sama ada fail telah membaca, menulis dan melaksanakan kebenaran masing-masing. F_OK digunakan untuk menentukan sama ada fail itu wujud.
Memandangkan access() hanya menyemak kebenaran dan tidak mengambil berat tentang bentuk fail atau kandungan fail, oleh itu, jika direktori ditunjukkan sebagai "boleh ditulis", ini bermakna direktori itu boleh diakses Operasi seperti mencipta fail baharu tidak bermakna direktori ini boleh dianggap sebagai fail.
Sebagai contoh, anda akan mendapati bahawa semua fail DOS mempunyai kebenaran "boleh laku", tetapi ia akan gagal apabila dilaksanakan dengan execve().
【7】Kod ralat
EACCESS Fail yang ditentukan oleh nama laluan parameter tidak memenuhi kebenaran yang diperlukan untuk ujian itu.
EROFS Fail yang akan diuji untuk kebenaran menulis wujud dalam sistem fail baca sahaja.
EFAULT Penunjuk nama laluan parameter melebihi ruang memori yang boleh diakses.
Mod parameter EINVAL tidak betul.
ENAMETOOLONG Nama laluan parameter terlalu panjang.
ENOTDIR Nama laluan parameter ialah direktori.
ENOMEM Memori teras tidak mencukupi
ELOOP 参数pathname有过多符号连接问题。
EIO I/O 存取错误。
【8】附加说明
使用access()作用户认证方面的判断要特别小心,例如在access()后再做open()的空文件可能会造成系统安全上的问题。
【9】范例
// 范例1 #include <unistd.h> int main() { if (access("/etc/passwd", R_OK) == 0) printf("/etc/passwd can be read\n"); return 0; } // 范例2 #include#include <unistd.h> int file_exists(char *filename); int main(void) { printf("Does NOTEXIST.FIL exist: %s\n", file_exists("NOTEXISTS.FIL") ? "YES" : "NO"); return 0; } int file_exists(char *filename) { return (access(filename, 0) == 0); }
【10】相关函数
stat,open,chmod,chown,setuid,setgid
推荐学习:《linux视频教程》
Atas ialah kandungan terperinci Cara menggunakan fungsi akses linux c. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!