#!/usr/bin/python
# -*- coding: utf-8 -*-

import os
import time
import sys

# Vytvorime pipe
(r_pipe,w_pipe)=os.pipe()
print "Pipe je",r_pipe,w_pipe
# Zavolame fork
pid_chld=os.fork()
# child dostane vratene 0, parent dostane PID childa
# oba procesy zdedia pipe, ale jeden bude citat a druhy zapisovat
if pid_chld==0:
	print "Child bezi"
	# child si vezme r_pipe a vytvori z neho pythonovsky
	# file objekt
	file_read=os.fdopen(r_pipe,"r")
	# precita 20 riadkov zo vstupu (retazce)
	for i in range(20):
		input=file_read.readline()
		# vypisuje druhe mocniny
		print "%d^2=%d" % (int(input),int(input)*int(input))
else:
	print "Parent bezi"
	file_write=os.fdopen(w_pipe,"w")
	for i in range(20):
		file_write.write("%d\n" % i)
		# ak nasledujuci riadok zakomentujeme,
		# parent bude pisat do buffra,
		# ktory sa vypluje pri zatvoreni
		file_write.flush()
		print "%d zapisovane" % i
		time.sleep(0.1)
	file_write.close()
	# treba pockat, kym neskonci child
	# inak si nestihne prebrat udaje
	os.wait()
