Tôi muốn có một cái gì đó như bash's 2>&1
chuyển hướng trong Haskell kết hợp stdout
và stderr
từ một quá trình vào một đơn Handle
. Nó sẽ là tốt đẹp để làm điều này trực tiếp với System.Process.createProcess
hoặc một chức năng thư viện tương tự, đặc biệt nếu nó được sử dụng cùng một ngữ nghĩa như chuyển hướng bash w.r.t. xen kẽ đầu vào từ tay cầm.Làm cách nào để kết hợp Handles trong Haskell?
Sự linh hoạt được cung cấp bởi createProcess
dường như hứa hẹn ban đầu: người ta có thể chỉ định một Handle
để sử dụng cho các file descriptor tiêu chuẩn, do cùng Handle
có thể được trao cho cả stdout
và stderr
. Tuy nhiên, đối số Handle
phải tồn tại trước cuộc gọi. Không có khả năng để tạo ra một Handle
từ không khí mỏng trước khi gọi chức năng, tôi không chắc chắn vấn đề có thể được giải quyết theo cách này.
Chỉnh sửa: Giải pháp cần phải hoạt động bất kể nền tảng.
Bạn có cần một cách tiếp cận đa nền tảng? Hoặc điều này sẽ chỉ chạy trên một hệ thống unix-y? –
@camccann Yep; đã cập nhật câu hỏi cho phù hợp. – acfoltzer
Vâng, [đây là câu trả lời bạn sẽ nhận được] (http://hackage.haskell.org/packages/archive/unix/2.4.2.0/doc/html/System-Posix-IO.html) nếu không. Về mặt kỹ thuật, nó hoạt động nếu bạn có một lớp tương thích như Cygwin, nhưng đó là ... eugh. –