Cara menggunakan fungsi akses linux c

藏色散人
Lepaskan: 2023-03-27 10:46:49
asal
1653 orang telah melayarinya

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.

Cara menggunakan fungsi akses linux c

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>
Salin selepas log masuk

【3】Takrifan fungsi

int access(const char * pathname,  int mode);
Salin selepas log masuk

【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);
}
Salin selepas log masuk

【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!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan