Viết cho stdin của một quá trình đang chạy bằng đường ống


8

Tôi đang ở trong một tình huống tương tự như trong bài viết này Nhưng tôi không nhận được giải pháp được cung cấp ở đó để làm việc trong tình huống của mình vì câu trả lời dường như chỉ liên quan đến câu hỏi đó.

Cụ thể, tôi không thể hiểu mục đích của nó là gì

cat my.fifo | nc remotehost.tld 10000

Trong trường hợp của tôi, tôi có một quá trình đang chạy và chờ đầu vào. Làm thế nào tôi có thể gửi đầu vào cho quá trình đó bằng cách sử dụng các đường ống được đặt tên?

Tôi đã thử echo 'h' > /proc/PID/fd/0nó chỉ hiển thị 'h' trên cửa sổ của quá trình.

Câu trả lời:


13

Chỉ cần bỏ qua các dòng có chứa nc, OP trong câu hỏi này muốn sử dụng nó để truyền dữ liệu qua mạng nc.

Điều đó để lại cho bạn:

mkfifo yourfifo
cat > yourfifo &
mypid=$!
yourprogram < yourfifo

Bây giờ bạn có thể gửi dữ liệu đến chương trình của bạn với

echo "Hello World" > yourfifo

Nếu bạn đã hoàn tất, chấm dứt chương trình của bạn, đưa ra lệnh kill $mypidđể thoát khỏi quá trình giả để giữ cho FIFO mở và rm yourfifothoát khỏi đường ống được đặt tên.


2
đang cat > yourfifo &làm gì vậy
Alexander Mills
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.