Tôi có một tệp thực thi Linux foo
đọc đầu vào từ fd 0 và ghi đầu ra vào fd 0 ( không phải fd 1). Điều này chỉ hoạt động tốt để sử dụng tương tác trong thiết bị đầu cuối.
Từ dòng lệnh shell, làm thế nào tôi có thể thực hiện chương trình này sao cho các lần đọc từ fd 0 đến từ một tệp, nhưng ghi vào fd 0 đi vào một tệp khác?
Điều tốt nhất tôi có thể đưa ra là $ goo input.txt output.txt | foo
nơi goo
một số chương trình trợ giúp, nhưng tôi không biết về bất kỳ chương trình helper hiện có, và tôi thậm chí không biết nếu ống được thành lập bởi |
là hai chiều.
foo <> /dev/tcp/localhost/1234
trong một cửa sổ và trong một cửa sổ nc -l 1234 < input.txt > output.txt
khác dường như làm việc!
LD_PRELOAD
thư viện để ghi đè write()
để write()
các cuộc gọi đến FD 0 được đổi thành FD 1.
foo
di chuyển ra $PATH
và trình bao bọc thay thế nó, sẽ cho phép có một foo
trong $PATH
đó hoạt động theo cách mà nó nên được viết ở vị trí đầu tiên.