나는 파이썬 스크립트 2 개 (foo.py
및 bar.py
)를 가지고 있습니다. 나는파이썬 백그라운드 쉘 스크립트 통신
python foo.py &
가 지금은 foo.py. 내부에 스크립트를 실행하는 데 bar.py
를 실행하고이 파일에서 표준 출력을 사용하려면 사용하여 백그라운드에서 foo.py를 실행하고 이것이 가능한가? 우분투 16.04 LTS를 사용하고 있습니다.
나는 파이썬 스크립트 2 개 (foo.py
및 bar.py
)를 가지고 있습니다. 나는파이썬 백그라운드 쉘 스크립트 통신
python foo.py &
가 지금은 foo.py. 내부에 스크립트를 실행하는 데 bar.py
를 실행하고이 파일에서 표준 출력을 사용하려면 사용하여 백그라운드에서 foo.py를 실행하고 이것이 가능한가? 우분투 16.04 LTS를 사용하고 있습니다.
UNIX named pipe을 사용할 수 있습니다.
먼저 파이썬 파일이있는 동일한 디렉토리에 mkfifo named_pipe
을 실행하여 명명 된 파이프 객체를 만듭니다.
foo.py
다음과 같이 수 :
while True:
for line in open('named_pipe'):
print 'Got: [' + line.rstrip('\n') + ']'
그리고 당신의 bar.py
은 다음과 같이 수 :
import sys
print >>open('named_pipe', 'wt'), sys.argv[-1]
그래서,이처럼 소비자 프로세스를 실행 python foo.py &
합니다. 그리고 마지막으로 python bar.py Hello
을 실행할 때마다 콘솔에 Got: [Hello]
이라는 메시지가 표시됩니다.
UPD : 바울의 대답과 달리 이라는 이름의 파이프를 사용하면 다른 쪽에서부터 하나의 프로세스를 시작할 필요가 없습니다.
프로세스 간에는 pipes
을 생성하는 UNIX 세계에서 실제로 온 시스템이 있습니다. 파이프는 기본적으로 한 쌍의 파일 설명자로, 각 프로그램은 그 중 하나에 액세스 할 수 있습니다. 다른 하나는 읽는 동안 하나 개의 프로그램은 파이프에 기록 :
https://docs.python.org/2/library/subprocess.html
그러나, 이것은 당신이 foo는 시작하고 서브 프로세스로 바과 출력/입력 후 연결이 추가적으로 스크립트를 필요로합니다.