Pythonの拡張ができないならプロセス通信してしまえ

Pythonの拡張ができなくてSQLTOOLをx64実行することができないのを解決する案が思いついた。
Cで作ったプログラムをサブプロセスとしてIOをPIPEでPythonから操作してしまえば似たようなことができるではないか。

Cのテストプログラム(inout.c)

#include
int main() {
	char str[80];
	while(gets(str) != NULL) {
		puts(str);
	}
	return 0;
}

pythonのテストプログラム(test.py)

import subprocess as s
p = s.Popen('inout.exe',stdin=s.PIPE,stdout=s.PIPE)
line = raw_input()
while line != '':
	p.stdin.write(line)
	print p.stdout.read()
	line = raw_input()
p.stdin.close()

・・・失敗した。

print p.stdout.read()

のところで停止する。
どうやらstdinをclose()するまではstdoutを読めないらしい。

pythonのテストプログラム2(test2.py)

仕方が無いので新しい方法を考えた。
Cのstdoutをfileにredirectしてinした後に読めばOKか?

import subprocess as s
f  = open('iotemp','w')
rf = open('iotemp')
p = s.Popen('inout.exe',stdin=s.PIPE,stdout=f)
line = raw_input()
while line != '':
	p.stdin.write(line)
	print rf.readlines()
	line = raw_input()
p.stdin.close()
rf.close()
f.close()

・・・失敗した。
うまく読み込めない。
inout.exeをcatに変えたらうまくいくのに。
inout.exeは何か悪いことでもしているのか?