Thật đơn giản để tạo lỗi ghi trong bộ kiểm tra bằng cách viết thư tới /dev/full
. Có một kỹ thuật tốt để tạo ra một lỗi đọc? Tôi hiện đang sử dụng LD_PRELOAD để ghi đè lên read
nhưng điều đó có vẻ quá phức tạp và không di động (không phải là/dev/full là di động ...).Tạo lỗi đọc
Trả lời
Bên cạnh đọc từ một thư mục (như đã đề cập trong một câu trả lời trước), bạn có thể cố gắng đọc /proc/self/mem
để nhận được một lỗi (điều này sẽ giúp bạn có một EIO
trên Linux). Để được giải thích, vui lòng xem: https://unix.stackexchange.com/a/6302
Mẹo hay, nhưng hãy cẩn thận rằng '/ proc/self/mem' chỉ tốt nếu bạn đọc từ đầu tệp. Nếu chương trình tìm kiếm đầu tiên, nó có thể vô tình kết thúc trong một vùng được ánh xạ. – Gilles
Theo (OS X) đọc (2) manpage, đọc (2) sẽ tạo ra lỗi nếu "[a] n cố gắng được thực hiện để đọc một thư mục." Do đó bạn có thể mở (2) một thư mục (đảm bảo rằng các prot không cho phép viết, hoặc điều này sẽ ném một lỗi) và sau đó cố gắng đọc từ nó. Điều đó trông giống như lỗi duy nhất được liệt kê ở đó có thể xảy ra trong các trường hợp 'bình thường' (nghĩa là không làm điều gì đó như cố ý phá vỡ một cấu trúc FILE *).
Tôi giả sử bạn đang nói về lỗi đọc (2) trong C hoặc giống như vậy, nhưng ngay cả trong ngôn ngữ cấp cao hơn, bạn có thể mở thư mục và cố gắng đọc từ đó (mặc dù Tôi chỉ thử nó với Python, và nó quá thông minh để cho phép bạn mở thư mục ...)
Bạn cũng có thể vượt qua một con trỏ bất hợp pháp như bộ đệm để đọc, mà sẽ trả về một -EFAULT. Cái gì như:
read(fd, (char *)0, cout);
Cảm ơn Suzuki
Điều đó sẽ không tạo ra lỗi đọc (EINVAL), nhưng bộ đệm nằm ngoài vùng địa chỉ có thể truy cập của bạn (EFAULT) trong khi đọc. Nhưng theo người đàn ông 2 đọc nó sẽ có thể để có được EINVAL với sửa đổi nhỏ. Nhưng điểm trong câu hỏi có vẻ là "làm thế nào để có được EINVAL mà không sửa đổi mã nhưng sản xuất một wrapper mà sẽ thi đua tất cả các tình huống lỗi thú vị". – jpe
Thực tế mã không nên sửa đổi và quá trình này phải mở thành công một tệp, thực hiện nhiều thao tác I/O (cả đọc và ghi) nhưng sau đó một số thao tác đọc tiếp theo sẽ được thực hiện để không thành công. Điều này có thể thực hiện được bằng cách ghi đè đọc và thực hiện một bộ đếm đơn giản để hoạt động đọc Nth thất bại, nhưng sẽ tốt hơn nếu làm điều gì đó từ một kịch bản lệnh shell tương tự như: 'kill -STOP $ pid; chmod 000 tập tin; kill -CONT $ pid'.Một phương pháp để nhận được một lỗi ghi trong điều kiện tương tự sẽ được tốt đẹp, như văn bản cho/dev/đầy thất bại trên ghi đầu tiên. –
Phương pháp hoạt động trên tất cả các thông báo chính sẽ là triển khai hệ thống tệp nhỏ FUSE. EIO là mã lỗi mặc định khi trình điều khiển hệ thống tệp của người dùng của bạn làm điều gì đó sai, do đó dễ dàng đạt được. Cả hai liên kết Perl và Python đều có các ví dụ để bắt đầu, bạn có thể nhanh chóng viết hệ thống tệp chủ yếu phản ánh các tệp hiện có nhưng tiêm một EIO ở những nơi được lựa chọn cẩn thận.
Có hệ thống tệp hiện có như vậy: petardfs (article), tôi không biết nó hoạt động tốt như thế nào.
Ồ, +1: petardfs rõ ràng là điều phải làm. –
- 1. Đọc lỗi tệp JSON
- 2. Lỗi đọc từ png.class
- 3. Mô phỏng thiết bị chặn bị lỗi có lỗi đọc?
- 4. boost :: asio, lỗi không đồng bộ đọc
- 5. Khởi tạo thuộc tính chỉ đọc
- 6. Lỗi đáp ứng phong bì SOAP: Lỗi khi đọc XMLStreamReader
- 7. m2e đưa ra lỗi "dự án đọc lỗi"
- 8. Đọc lỗi: Lỗi trong thư viện SSL, thường là lỗi giao thức
- 9. Nhận lỗi: "đọc kém của inttemp!" khi đào tạo một phông chữ mới trong Tesseract 2
- 10. Trình tải khởi động FAT16 hoạt động tạo ra lỗi đọc trên phần cứng thực tế?
- 11. IOError: lỗi đọc dữ liệu yêu cầu
- 12. E262: lỗi đọc kết nối cscope 0
- 13. Lỗi tẩy trong Python: io.UnsupportedOperation: đọc
- 14. Tạo nhật ký đọc hiệu quả
- 15. cách tạo phiên chỉ đọc trong nHiberate?
- 16. Repa --- Cách tạo một thể hiện Đọc?
- 17. Cách tạo Combobox trong winforms chỉ đọc
- 18. Tạo Trình đọc scala từ một tệp
- 19. Tạo cột chỉ đọc bằng apache poi
- 20. Cài đặt Phonegap Lỗi Cordova Tạo Lỗi
- 21. lỗi khi tạo GTest
- 22. Rails Script/tạo lỗi
- 23. Lỗi tạo sessionfactory
- 24. Lỗi 0x80004005 khi đọc tệp kết xuất với WinDbg
- 25. Cách tạo trường chỉ đọc trong Chế độ xem
- 26. Tạo một kho lưu trữ chỉ đọc với SpringData
- 27. C#/ASP.NET Oledb - MS Excel đọc "Lỗi không xác định"
- 28. cv :: VideoWriter tạo video không thể đọc được
- 29. Nhật ký lỗi đọc Android từ điện thoại
- 30. corebluetooth Đọc RSSI lỗi: Thao tác đã bị hủy
Chỉ là một suy nghĩ, nhưng những gì về đọc từ một tập tin với perms thiết lập để 000? –
@Loadmaster Điều đó sẽ gây ra lỗi 'mở' thay vì lỗi' đọc'. –
Bạn có sau EINVAL không? – jpe