Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Semak sama ada Direktori Wujud dalam Unix Menggunakan stat() dan lstat()?

Bagaimana untuk Semak sama ada Direktori Wujud dalam Unix Menggunakan stat() dan lstat()?

Patricia Arquette
Patricia Arquetteasal
2024-11-16 10:13:03359semak imbas

How to Check if a Directory Exists in Unix Using stat() and lstat()?

Menyemak Kewujudan Direktori dalam Unix: Menggunakan stat() dan lstat() Panggilan Sistem

Menentukan sama ada direktori tertentu wujud ialah tugas biasa dalam pengaturcaraan Unix. Walaupun fungsi seperti opendir() boleh menunjukkan kehadiran direktori melalui pengendalian ralat, ia mungkin bukan pendekatan yang ideal untuk hanya mengesahkan kewujudan. Artikel ini membentangkan cara yang cekap untuk menyelesaikan tugas ini menggunakan panggilan sistem stat() dan lstat().

stat() dan lstat()

Stat() dan fungsi lstat() menyediakan maklumat berharga tentang kewujudan dan jenis fail berdasarkan nama laluannya. Tidak seperti opendir(), fungsi ini tidak membuka fail sebaliknya mengumpulkan data tentang atributnya. Perbezaan utama antara stat() dan lstat() terletak pada cara mereka mengendalikan pautan simbolik.

  • stat(): Mengikuti pautan simbolik dan memberikan maklumat tentang objek yang dipautkan.
  • lstat(): Menilai pautan simbolik itu sendiri, memberikan maklumat tentang pautannya sendiri atribut.

Untuk mengesahkan sama ada fail ialah direktori, makro S_ISDIR() digunakan bersama dengan stat() atau lstat(). Coretan kod berikut menunjukkan penggunaannya:

#include <sys/stat.h>

struct stat sb;

if (stat(pathname, &sb) == 0 && S_ISDIR(sb.st_mode)) {
    // Directory exists and is accessible
}

Semakan Jenis Fail Tambahan

Selain daripada direktori, pelbagai jenis fail lain boleh disahkan menggunakan makro S_IS* tertentu. Berikut ialah senarai komprehensif:

  • 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

Memahami makro ini membolehkan semakan jenis fail serba boleh dalam program Unix anda.

Atas ialah kandungan terperinci Bagaimana untuk Semak sama ada Direktori Wujud dalam Unix Menggunakan stat() dan lstat()?. 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