17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Principaux modules<br />

CHAPITRE 8<br />

Ce tunnel prend la forme d’un fichier ouvert dans lequel le processus peut lire les<br />

éventuelles données renvoyées par le processus enfant et écrire des données si le<br />

mode d’ouverture mode le permet. mode est à r par défaut mais peut prendre toute les<br />

valeurs de mode d’ouverture de fichier.<br />

Enfin, bufsize détermine la taille du tampon d’entrée-sortie du fichier. Comme<br />

pour la primitive open(), bufsize peut prendre la valeur 0 (pas de tampon), 1<br />

(tampon de la taille d’une ligne), n (entier supérieur à 1, déterminant la taille du<br />

tampon en caractères).<br />

Lorsque le fichier est fermé par le biais de la méthode close(), le sous-processus<br />

renvoie le code de retour sous la forme d’un entier. S’il n’y a eu aucune erreur,<br />

close() renvoie None en lieu et place du code de retour 0.<br />

Cette fonctionnalité est disponible sous quatre formes, avec un retour différent pour<br />

chacune d’entre elles.<br />

popen(cmd[, mode[, bufsize]])<br />

Renvoie un fichier ouvert vers le sous-processus.<br />

popen2(cmd[, mode[, bufsize]])<br />

Renvoie un tuple composé de deux fichiers ouverts vers le sous-processus. Le premier<br />

est le flux d’entrée standard du processus, le second le flux de sortie.<br />

popen3(cmd[, mode[, bufsize]])<br />

Comme popen2 mais ajoute un troisième fichier pour le flux standard d’erreurs.<br />

popen4(cmd[, mode[, bufsize]])<br />

Comme popen3 mais regroupe les flux de sortie et d’erreur dans le même flux.<br />

L’exemple ci-dessous utilise popen() pour appeler la commande shell ls.<br />

Appel de ls<br />

>>> pipe = os.popen('ls -lh /usr/lib/python2.4')<br />

>>> pipe.readline()<br />

'total 9,2M\n'<br />

>>> pipe.readline()<br />

'-rw-r--r-- 1 root root 33K f\xe9v 12 2005 aifc.py\n'<br />

>>> pipe.readline()<br />

'-rw-r--r-- 1 root root 28K f\xe9v 12 2005 aifc.pyc\n'<br />

>>> pipe.readline()<br />

'-rw-r--r-- 1 root root 28K f\xe9v 12 2005 aifc.pyo\n'<br />

237

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!