#やりたいとこと
以下のpythonのプログラム"popen.py"を実行し、プログラム内で"call.py"を子プロセスとして実行させます。
その後、"call.py"内で、hello.cppの実行ファイル./helloを実行し、hello.cppの出力をpopen.py内にリアルタイム受け渡したいです。
現在はpopen.pyを実行しても、リアルタイムで"hello world"を取得できず、call.pyの処理が終了した後に、"hello world"が10個まとめて出力されます。
そこで、popen.pyでリアルタイムで"hello world"を取得できる方法はありませんか?
二度手間な実装となっていますが、現在の環境の都合上2重に子プロセスを実行したいです。
これは、前回質問した内容の発展形となっています。
前回の質問のURLを以下に示します。
https://teratail.com/questions/335631
有識者の方々ご助力のほどよろしくお願いします。
popen.py
python
1import subprocess 2 3print 'popen start' 4 5cmd = 'python call.py' 6proc = subprocess.Popen(cmd.split(),stdout=subprocess.PIPE,stderr = subprocess.STDOUT) 7 8for line in iter(proc.stdout.readline, b''): 9 print(line.rstrip().decode('utf8')) 10 11print 'popen end'
call.py
python
1import subprocess 2 3p = subprocess.Popen("./hello", 4 stdout = subprocess.PIPE, 5 stderr = subprocess.STDOUT) 6 7for line in iter(p.stdout.readline, b''): 8 print(line.rstrip().decode('utf8'))
hello.cpp
cpp
1#include <iostream> 2#include <stdio.h> 3#include <unistd.h> 4 5using namespace std; 6 7int main(){ 8 9 int i = 1; 10 11 while(i<10){ 12 cout << "Hello world." << endl; 13 i++; 14 sleep(3); 15 } 16 return 0; 17}
回答1件
あなたの回答
tips
プレビュー