2012-09-07 36 views
7

Tôi biết tôi có thể lấy subprocess stdin sử dụng quá trình trong python như:Làm thế nào tôi có thể nhận được một stdin của quá trình bằng một id quá trình?

import subprocess 
f = subprocess.Popen('python example.py',stdin=subprocess.PIPE) 
f.stdin.write('some thing') 

nhưng tôi muốn chỉ biết pid mà tôi muốn ghi vào của quá trình stdin làm thế nào tôi có thể làm điều này?

+3

Bạn muốn chiếm quyền điều khiển thiết bị nhập chuẩn của quá trình khác? Đó không phải là một điều rất tốt đẹp để làm ... –

+0

có, tôi muốn viết someting để một stdin khác của quá trình – timger

+0

trên máy bạn muốn nó? – 0x90

Trả lời

11

Đơn giản chỉ cần viết thư cho /proc/PID/fd/1:

import os.path 
pid = os.getpid() # Replace your PID here - writing to your own process is boring 
with open(os.path.join('/proc', str(pid), 'fd', '1'), 'a') as stdin: 
    stdin.write('Hello there\n') 
Các vấn đề liên quan