Làm cách nào để kiểm tra xem tệp có quyền đọc trong C không?c đọc các quyền của tệp
Trả lời
Sử dụng access(2)
trong POSIX. Trong tiêu chuẩn C, tốt nhất bạn có thể làm là cố gắng để mở nó với fopen()
và xem nếu nó thành công.
Nếu fopen()
lợi nhuận NULL
, bạn có thể thử sử dụng errno
để phân biệt giữa "File không tồn tại" (errno == ENOENT
) và "Permission denied" (errno == EACCES
) Các trường hợp - nhưng tiếc là hai errno
giá trị chỉ được định nghĩa bởi POSIX như tốt.
(Ngay cả trên POSIX, trong hầu hết các trường hợp, điều tốt nhất cần làm là cố gắng mở tệp, sau đó xem tại sao nó không thành công, vì sử dụng access()
giới thiệu một điều kiện rõ ràng).
Sử dụng access() chức năng:
if (access(pathname, R_OK) == 0)
{
/* It's readable by the current user. */
}
errno
sẽ được thiết lập để ENOENT
nếu tập tin không tồn tại, hoặc EACCES
nếu nó tồn tại nhưng không thể truy cập cho người dùng hiện tại. Xem the manual page để biết thêm các mã lỗi.
Tôi là người hâm mộ sử dụng số stat().
Người hỏi đã hỏi cách đọc quyền của tệp. Hàm stat() trả về các quyền của tệp. Hàm fstat() trả về các quyền của tập tin cho phép xử lý tệp đã mở của nó. – bearvarine
- 1. Đặt quyền tệp trong C#
- 2. C# Tệp/Thư mục Quyền
- 3. Đọc các tệp .DXF
- 4. Phát hiện tệp đã đọc trong C#
- 5. đọc tệp .bmp bằng C++
- 6. Đọc tệp XML nhúng C#
- 7. lấy quyền sở hữu một tệp C#
- 8. Đọc Quyền đối với thư mục trong C#
- 9. C++, đọc tệp bằng ifstream
- 10. đọc tệp từ trong C#
- 11. Lập trình bổ sung các quyền bảo mật cho các tệp trong C#
- 12. Đọc các tệp văn bản lớn có dòng trong C#
- 13. Cách đọc dữ liệu của tệp Excel bằng C#?
- 14. FileSystemObject - Đọc các tệp Unicode
- 15. Đọc/ghi các tệp phân tách CSV/tab trong C#
- 16. Đọc các tệp MIDI
- 17. mở tệp ở chế độ độc quyền trong C#
- 18. Đọc các tệp rất lớn trong PHP
- 19. chưa đọc một tệp trong C++
- 20. Đọc một dòng tệp theo dòng C#
- 21. Đọc các byte đầu tiên của một tệp
- 22. Cách đọc tệp XML trong C#?
- 23. Quyền đọc/ghi trên Android của một thư mục
- 24. Đọc từ tệp excel trong C
- 25. lỗi xcrun: Không thể đọc các quyền từ
- 26. đặt quyền tệp trong tệp setup.py
- 27. Đọc tệp XML trong C# với XpathNavigator
- 28. Ms Truy cập: Không thể đọc (các) bản ghi; không có quyền đọc trên [bảng]
- 29. Đọc từ các tệp .msg
- 30. Đọc trong tệp XML/KML bằng C#
Tôi sẽ sử dụng fopen(), nhưng tôi cần để có thể cho biết sự khác biệt cho dù các tập tin isnt có thể đọc được và cho dù nó không tồn tại –
Sử dụng fopen sẽ tốt hơn. Vì truy cập dễ bị tấn công TOCTOU. (http://en.wikipedia.org/wiki/TOCTOU). Nếu đó là một mối quan tâm trong trường hợp của bạn cả. –
Tôi sẽ gọi mã bẩn này ... – Tobi