Vì mục đích gỡ lỗi, tôi cần kiểm tra con trỏ để xem địa chỉ có trỏ đến trang có thể đọc hợp lệ hay không. Hiện tại tôi đang phân tích cú pháp/proc/[pid]/maps để xem địa chỉ có được ánh xạ không, nhưng điều này có vẻ hơi dài một chút. Có cách nào tốt hơn? Cảm ơn.Cách kiểm tra xem địa chỉ có thể đọc được trong ứng dụng không gian người dùng Linux
Trả lời
Cách kinh điển là sử dụng lệnh gọi hệ thống write()
để đọc từ trang này (ghi vào bộ mô tả tệp giả) pipe()
. Thay vì bị lỗi, nó sẽ trả lại -1
với errno == EFAULT
nếu bộ đệm được ghi là không đọc được.
Cảm ơn, điều này làm việc một điều trị! – gimmeamilk
Cảnh báo: Đã xem ít nhất một giải pháp SO khác đề xuất sử dụng/dev/null cho mục đích này (http://stackoverflow.com/questions/4611776/isbadreadptr-analogue-on-unix), nhưng các hạt nhân mới hơn (tôi đã thử nghiệm trên 3.8 .7) trả về thành công cho/dev/null write() ngay cả khi 'buf' là NULL. Vì vậy, trong khi thử nghiệm này có thể làm việc với/dev/null trên hệ thống nào bạn đang thử nghiệm, nó chắc chắn không phải là một giải pháp di động. Sử dụng một số fd khác (như một đường ống giả hoặc đối tượng shix posix) sẽ không được nhanh chóng nhưng nó chắc chắn sẽ an toàn hơn và di động hơn. – etherice
- 1. Kiểm tra xem địa chỉ email paypal có phải là người dùng đã xác minh không
- 2. cách kiểm tra xem địa chỉ email cụ thể có tồn tại trong C# không?
- 3. kiểm tra xem địa chỉ mmap'ed có chính xác không
- 4. Địa chỉ IP C++ Dạng người có thể đọc được
- 5. Kiểm tra xem người dùng cụ thể có vai trò
- 6. Kiểm tra xem chuỗi có chứa địa chỉ email không?
- 7. Cách kiểm tra xem địa chỉ IP có nằm trong một mạng con cụ thể không
- 8. Cách kiểm tra xem người dùng có đăng nhập hay không (cách sử dụng đúng user.is_authenticated)?
- 9. Kiểm tra xem người dùng có ở trong nhóm
- 10. kiểm tra xem người dùng có cho phép ứng dụng sử dụng vị trí của họ
- 11. Kiểm tra xem toàn bộ div có thể xem được cho người dùng
- 12. Macro có thể có khả năng/không được sử dụng trong mã không gian người dùng?
- 13. Cách kiểm tra xem người dùng có được đăng nhập với Zend Framework không?
- 14. Cách kiểm tra xem tiện ích con giao diện người dùng jQuery có được tải không?
- 15. Cách kiểm tra xem người dùng có được kết nối với internet wp7 không?
- 16. Kiểm tra địa chỉ được tạo hình bằng cách sử dụng GDB
- 17. người dùng tra cứu trong ActiveDirectory theo địa chỉ email
- 18. Cách kiểm tra xem người dùng có được ủy quyền bên trong Hành động
- 19. Python - Cách kiểm tra xem tệp có được ứng dụng khác sử dụng không?
- 20. kiểm tra ra khỏi không gian đĩa trong linux
- 21. dấu thời gian có thể đọc được của con người trong hạt nhân Linux
- 22. Làm cách nào để kiểm tra xem tệp có tồn tại và có thể đọc được trong C++ không?
- 23. cách kiểm tra xem đầu đọc thẻ flash trống có có trong khe cắm USB không?
- 24. Kiểm tra xem chứng chỉ người dùng cuối có được cài đặt trong kho khóa cửa sổ không?
- 25. Linux: Kiểm tra xem ổ cắm/ống có bị hỏng mà không đọc()/write()
- 26. Kiểm tra xem người dùng mysql có tồn tại
- 27. Cách kiểm tra xem có đang chạy trên chuỗi giao diện người dùng trong Android không?
- 28. Cách kiểm tra xem người dùng Django vẫn chỉ đăng nhập từ phía máy khách?
- 29. Cách kiểm tra xem JCheckBox có được kiểm tra không?
- 30. Cách kiểm tra xem người dùng có trả tiền trên Android không?
Tôi đang thực hiện phân tích cú pháp '/ proc/self/maps' là –
@GregoryPakosz: Để trở thành giải pháp chung & đáng tin cậy, không yêu cầu tải lại và sửa lại bản đồ trên mọi séc để giải thích mọi thứ giống như một phân vùng phát triển hoặc phân đoạn bộ nhớ mới được ánh xạ? – etherice
@etherice: Không vì/proc tự làm mới; mỗi khi bạn truy cập vào một/proc tập tin (s), mã hạt nhân chạy mà tái tạo nó là "nội dung". – kaiwan