Có cách nào di chuyển (trên hệ thống POSIX) để xác định xem một bộ mô tả tập tin có thể tìm kiếm được không? Suy nghĩ của tôi là sử dụng lseek(fd, 0, SEEK_CUR);
và kiểm tra xem giá trị trả về là -1, nhưng tôi không chắc chắn liệu điều này có thể mang lại âm tính giả hoặc dương tính giả hay không. Sử dụng fstat
và đưa ra các giả định về loại tệp nào có thể tìm kiếm/không thể truy cập không giống như ý tưởng hay. Bất kỳ ý tưởng nào khác?Làm thế nào để xác định xem một bộ mô tả tập tin có thể tìm kiếm được không?
Trả lời
Phương thức lseek
có vẻ hợp lý. Nó chắc chắn không thể gây ra một tiêu cực sai - nếu nó đã làm, một cái gì đó là nghiêm trọng sai với việc thực hiện. Ngoài ra, theo POSIX spec, nó được cho là thất bại nếu bộ mô tả là một đường ống, FIFO hoặc socket, vì vậy về mặt lý thuyết, bạn cũng không nên có các kết quả sai. Câu hỏi duy nhất còn lại là các hệ thống khác nhau tuân thủ các thông số kỹ thuật tốt như thế nào. Tuy nhiên, nó có vẻ giống như bất kỳ phương pháp khác, bất cứ điều gì họ có thể được, chắc chắn sẽ ít di động hơn này.
Bạn có thể sử dụng fstat(), sau đó macro S_ISREG trên trường chế độ của cấu trúc stat để kiểm tra xem đó có phải là tệp thông thường hay không; một tệp thông thường, per definiton, có thể tìm kiếm được trong khi tệp "không thường xuyên" (đặc biệt) có thể không có (tôi không biết nếu có các tệp đặc biệt nào cũng có thể tìm kiếm được).
Nhưng phải, kiểm tra giá trị trả lại của lseek() và errno == ESPIPE cũng sẽ hoạt động. Về nguyên tắc, the effect of lseek() on devices which are incapable of seeking is implementation-defined, vì vậy hãy cẩn thận của daemon mũi.
- 1. ftell trên một bộ mô tả tập tin?
- 2. Làm thế nào bạn có thể xóa một ghi bằng cách sử dụng một bộ mô tả tập tin?
- 3. Làm thế nào để có được bộ mô tả tập tin của bộ đệm trong bộ nhớ?
- 4. Làm cách nào để xác định xem tìm kiếm của UISearchDisplayController có được hiển thị không?
- 5. Trong bash, làm thế nào để mở một mô tả tập tin có thể ghi được chuyển hướng bên ngoài?
- 6. Làm thế nào để tải một tập tin xem magento (.phtml) từ một bộ điều khiển
- 7. bash: xác định biến tập tin cục bộ vô hình để tìm kiếm mã script
- 8. Viết cho nhiều tập tin mô tả
- 9. Fopen có tạo ra một bộ mô tả tập tin không?
- 10. Làm thế nào để bạn chỉ mục tập tin để tìm kiếm nhanh?
- 11. Chuyển hướng Bash với bộ mô tả tập tin hoặc tên tập tin trong biến
- 12. Gói công cụ tìm kiếm có thể cài đặt để tìm kiếm tập tin
- 13. Ruby: Làm thế nào để xác định xem tập tin được đọc là nhị phân hay văn bản
- 14. Làm thế nào để xác định xem một thực thể Doctrine có tiếp tục không?
- 15. Xác định xem mô-đun Magento có được bật không
- 16. Có bao nhiêu thông tin thực sự được lưu trữ trong một bộ mô tả tệp?
- 17. Làm thế nào để sử dụng một biến để chỉ ra một mô tả tập tin trong bash?
- 18. Bash thay thế quá trình kép cho bộ mô tả tập tin sai
- 19. (Làm cách nào) Tôi có thể tìm loại ổ cắm từ bộ mô tả ổ cắm không?
- 20. emacs - làm thế nào để tìm kiếm tập tin trong thư mục con
- 21. Làm thế nào tôi có thể sử dụng LINQ để xác định xem chuỗi này có EndsWith một giá trị (từ một bộ sưu tập) không?
- 22. git push .git/tập tin mô tả
- 23. Làm thế nào để xác định xem một cá thể đã được mở rộng bởi một mô-đun Ruby?
- 24. Cách chỉ định mặt nạ tìm kiếm chính xác cho hộp thoại "Kiểm tra tập tin mô tả thử nghiệm" trong định nghĩa xây dựng TFS2010?
- 25. làm thế nào để có được DTPerformanceSession làm việc khi 'tập tin libproc.h không tìm thấy'
- 26. Backbone.js: Làm thế nào để có được chỉ số của một mô hình trong một bộ sưu tập xương sống?
- 27. Tôi có thể lặp lại một bộ mô tả định dạng chuỗi trong python không?
- 28. Tạo một chủ đề mới Mô tả tập tin trùng lặp và bộ mô tả socket trong Linux?
- 29. làm thế nào tôi có thể tìm kiếm cho các tập tin và nén chúng trong một file zip
- 30. Làm thế nào để xác định một bộ sưu tập trong một configSection tùy chỉnh
Thiết bị chặn, chẳng hạn như ổ đĩa cứng, có thể tìm kiếm được. Có lẽ ngay cả các thiết bị nhân vật, nhưng tôi không chắc chắn. – Thomas
một số thiết bị không thực sự có thể tìm kiếm sẽ không thất bại trong tìm kiếm (tại leas trên Linux, ai đó cố gắng tìm kiếm thất bại nhưng phát hiện ra các ứng dụng không gian người dùng phụ thuộc vào hành vi ...) – Spudd86
True; một số trình điều khiển thiết bị ký tự đơn giản bỏ qua tìm kiếm() và âm thầm quay trở lại. –