Listemessaggi CoPlast ha scritto: > Ciao a tutti. > > Se creo una named pipe (su linux) mkfifo mio_path e la apro > mio_file = open("mio_path", "r") il programma rimane in attesa che > qualcuno invii qualcosa a quella pipe. > Ora se invio qualcosa ad esempio banalmente echo 1 > mio_path allora > il programma supera l'istruzione open e va alle successive. Quì trova > dei cicli while contenenti delle mio_file.read() ed ora continua > all'infinito dentro la while anche se la pipe è vuota. Quando c'è > qualcosa nella pipe la legge e svuota la pipe ma poi continua nel loop > infinito restituendo niente dalle read. > Se non ho capito male in C sono le read ad essere bloccanti (a meno di > specifare diversamente nella open del C). La cosa mi interesserebbe (le > read bloccanti intendo), esiste un modo per farlo con python? >
Leggiti un buon libro sulla programmazione in ambiente UNIX/POXIX. La soluzione è impostare il descrittore di file in modalità non bloccante ed usare select/poll per essere notificati quando c'è qualcosa da leggere. Questo tipo di programmazione non è banale. Twisted la rende abbastanza più semplice da gestire. > > Matteo. Manlio Perillo _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python