17.01.2015 Views

Généralités sur les systèmes d'exploitation traitement Entrées Sorties

Généralités sur les systèmes d'exploitation traitement Entrées Sorties

Généralités sur les systèmes d'exploitation traitement Entrées Sorties

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

TD 4 : Communication entre processus locaux et distants : réseaux<br />

Exercice 1<br />

Gestion d'un signal<br />

On trouve dans signal.h le signal SIGINT qui est le signal envoyé à un processus lors de l'appui <strong>sur</strong> Ctrl+C.<br />

La primitive signal permet de détourner un signal. La primitive signal avec SIG_DFL permet de rétablir le<br />

gestionnaire du signal SIGINT par défaut. On vous donne le programme suivant :<br />

#include <br />

#include <br />

#include <br />

void gestionsignal(int signal) {<br />

printf(« Signal reçu %d\n »,signal);<br />

signal(SIGINT,SIG_DFL);<br />

}<br />

main(){<br />

signal(SIGINT,gestionsignal);<br />

while(1) {<br />

printf(« Bonjour\n »);<br />

sleep(1);<br />

}<br />

return 0;<br />

}<br />

Combien de fois faudra-t-il actionner la combinaison Ctrl+C pour sortir de ce programme <br />

Réponse :<br />

2 la première on active gestionsignal qui elle-même replace l'ancien gestionnaire.<br />

On déconseille maintenant l'utilisation de signal au profit de sigaction.<br />

Exercice 2<br />

On vous donne le programme C suivant :<br />

#include <br />

#include <br />

#include <br />

#include <br />

/* BUFSIZ est déjà défini */<br />

main(){<br />

FILE *tube;<br />

char tampon[BUFSIZ+1];<br />

int carlus<br />

memset(tampon,'\0',sizeof(tampon));<br />

tube=popen(« ps -ax », « r »);<br />

if (tube !=NULL) {<br />

carlus = fread(tampon,sizeof(char),BUFSIZ,tube);<br />

while (carlus > 0) {<br />

tampon[carlus-1]='\0';<br />

printf(« En lecture :-\n »);<br />

carlus=fread(tampon,sizeof(char),BUFSIZ,tube);<br />

}<br />

pclose(tube);<br />

exit(EXIT_SUCCESS);<br />

}<br />

exit(EXIT_FAILURE);<br />

}<br />

Quelle commande devriez-vous lancer à partir d'un shell pour avoir à peu près le même affichage <br />

Pourquoi le à peu près dans la question <br />

Réponse :<br />

ps -af<br />

10 / 51 Travaux Dirigés LO 14

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

Saved successfully!

Ooh no, something went wrong!