#! /usr/bin/env python import os,sys def create_open_fifo(name): '''Cree une FIFO avec le nom demande si un fichier du meme nom n'existe pas deja et ouvre ce fichier en lecture''' # Verifie si un fichier existe deja. S'il n'existe pas, l'appel # a stat echouera. Donc on cree la FIFO dans le bloc except, et on # affiche une erreur en cas de succes. try: stats = os.stat(name) # Si on continue ici, c'est qu'il n'y a pas eu d'exception print "Erreur: le fichier %s existe deja!"%(name) sys.exit(0) except OSError: # stat a echoue, on cree la FIFO os.mkfifo(name) # On ouvre le fichier FIFO en lecture fd = os.open(name,os.O_RDONLY) return fd def copy_from_file(fd_in,fd_out): '''Copie les donnees lues sur le descripteur fd_in vers le descripteur fd_out.''' msg = os.read(fd_in,1024) while len(msg) > 0: os.write(fd_out, msg) msg = os.read(fd_in,1024) if __name__ == "__main__": fd_in = create_open_fifo(sys.argv[1]) # Copy data from FIFO to stdout copy_from_file(fd_in,1) os.close(fd_in) # detruit la FIFO os.unlink(sys.argv[1]) sys.exit(0)