Tôi muốn kích động một tình huống mà không có bộ mô tả tệp nào còn lại.Làm thế nào tôi có thể mô phỏng một thiếu mô tả tập tin?
Tôi đã suy nghĩ về 2 khả năng:
- Mở hàng ngàn tập tin ngẫu nhiên cho đến khi kết quả của mở là -1
- Đặt một số lượng rất thấp của bộ mô tả tập tin có sẵn (giả sử stdin, stdout và stderr).
Bạn sẽ làm như thế nào?
Hoặc sử dụng ['setrlimit'] (http://linux.die.net/man/2/setrlimit) từ C. – o11c
Vỏ có tạo mô tả tệp khi sinh ra một chương trình bên ngoài không? Tôi nghĩ rằng một đường ống ít nhất sẽ cần phải sử dụng 'ống (2)' và các loại thay thế cũng có thể gây ra vấn đề. Ít nhất, bạn nên biết rằng ulimit này sẽ làm hỏng vỏ của bạn. – Kevin
@Kevin, chuyển hướng có thể được thực hiện thông qua 'dup (2)', 'dup2 (2)', hoặc 'pipe (2)', nhưng khi shell đơn giản sinh ra một chương trình và chỉ forks và sử dụng 'execve (2)' chuyển qua 3 bộ mô tả đầu tiên mà không cần tạo mô tả mới cho quy trình con. Để chuyển hướng thực tế, bất kể bạn sử dụng cái gì, một bộ mô tả được tạo ra, vì bộ mô tả được nhân đôi trước khi nó có thể được gán lại/đính kèm, như stdin đã được gắn với bộ mô tả stdin của trình bao. Giới hạn chỉ có thể được nâng lên một lần nữa sau khi kiểm tra của bạn lên đến giới hạn trên mặc định (xem mặc định bằng 'ulimit -n'). – Matthew