Je souhaite que mon programme dorme jusqu'à 10 secondes même si le signal est émis. Donc, j'ai essayé le programme suivant.Appel système interrompu C
Programme:
#include<stdio.h>
#include<signal.h>
#include<errno.h>
int main()
{
printf("PID: %d\n",getpid());
int unslept=10;
while(unslept>0){
unslept=sleep(unslept);
if(errno==EINTR)
continue;
}
return 0;
}
Sortie:
$ ./a.out
PID: 18935
User defined signal 1
$
Je pense que le programme ci-dessus exécutera 10 secondes, même le signal est interrompu. Je l'exeperiment comme, dans un terminal I exécuté ce programme. Et en utilisant un autre terminal en utilisant la commande kill, j'ai envoyé le signal SIGUSR1 à ce processus. Mais, le même problème se produit. Une fois le signal passé, le programme se termine. Donc, existe-t-il un moyen d'exécuter mon programme jusqu'à 10 secondes sans affecter aucun signal.
Voulez-vous gérer ces signaux ou simplement les ignorer? –
Si vous lisez [la page de manuel 'signal (7)'] (http://man7.org/linux/man-pages/man7/signal.7.html) vous verrez que l'action par défaut pour 'SIGUSR1' (et 'SIGUSR2') est de terminer le processus. –
Veuillez lire une introduction sur les signaux. Il semble que vous ayez de la difficulté à comprendre comment fonctionnent les singals. – fuz