Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Semak sama ada Direktori Wujud dalam Unix Menggunakan Panggilan Sistem?

Bagaimana untuk Semak sama ada Direktori Wujud dalam Unix Menggunakan Panggilan Sistem?

Barbara Streisand
Barbara Streisandasal
2024-11-08 00:30:03240semak imbas

How to Check if a Directory Exists in Unix Using System Calls?

Mengesahkan Kewujudan Direktori dalam Unix Menggunakan Panggilan Sistem

Dalam sistem Unix, menanyakan kewujudan direktori adalah penting untuk pelbagai tugas pengurusan fail. Tidak seperti opendir() yang mengembalikan ralat jika direktori tidak wujud, kaedah lain menyediakan pengesahan direktori yang lebih tepat.

stat() dan lstat() untuk Semakan Direktori

Sistem POSIX menawarkan dua fungsi, stat() dan lstat(), untuk memastikan kewujudan dan jenis objek yang ditentukan oleh nama laluan. Semasa stat() mengikuti pautan simbolik, lstat() meneliti pautan simbolik itu sendiri.

Coretan kod berikut menunjukkan cara menggunakan stat() untuk menyemak kewujudan direktori:

#include <sys/stat.h>

struct stat sb;

if (stat(pathname, &sb) == 0 && S_ISDIR(sb.st_mode))
{
    // ...it is a directory...
}

Makro S_IS* untuk Pengenalan Jenis Fail

Jika stat() berjaya, S_ISDIR() boleh digunakan untuk menentukan sama ada fail itu ialah direktori. Makro S_IS* lain membenarkan pengecaman pelbagai jenis fail:

  • S_ISDIR - Direktori
  • S_ISREG - Fail biasa
  • S_ISCHR - Peranti aksara
  • S_ISBLK - Sekat peranti
  • S_ISFIFO - FIFO
  • S_ISLNK - Pautan simbolik
  • S_ISSOCK - Soket

Atas ialah kandungan terperinci Bagaimana untuk Semak sama ada Direktori Wujud dalam Unix Menggunakan Panggilan Sistem?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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