Réactiver un processus
Résolu
sarahchaima
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
sarahchaima Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
sarahchaima Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
Bonsoir tout le monde j'espère que vous allez bien!; j'ai rencontré un petit problème dans le code suivant; c'est quand j'appuie sur la combinaison ctrl+z pour désactiver mes processus ;ils doivent être réactivés quand j'appuie une autre fois sur ctrl+z ms avec mon code les processus sont réactivés juste après leur désactivation tout seul; ,et je veux savoir svp le problème pourquoi mon code ne fonctionne pas correctement
Merci d'avance!
Note:
il faut appuyer la combinaison ctr+c trois fois pour arrêter le programme
les processus sont activés ou réactivés à tout moment
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<signal.h>
volatile sig_atomic_t compteurPourCTRL_Z=0;
volatile sig_atomic_t compteurPourCTRL_C=0;
volatile sig_atomic_t CAS=0;
volatile sig_atomic_t suspendu=0;
static void handler1(int sigNum)
{
compteurPourCTRL_C ++;
if(compteurPourCTRL_C==3){
printf("\n processus termne\n");
kill(getpid(),SIGKILL);
}
}
static void handler2(int sigNum)
{
if(suspendu==0){
//suspendu=0 le cas initiale avant activation
suspendu=1;//suspendu==1 veut dire activé
printf("\n processus activé \n");
alarm(1);
}else if(suspendu==1){
suspendu=2;//suspendu=2 veut dire désactivé
printf("\n processus désactivé \n");
kill(getpid(),SIGTSTP);
}else if(suspendu==2){
suspendu=1;
printf("\n processus réactivé \n");
kill(getpid(),SIGCONT);
}
}
static void handler3(int sigNum)
{
if(suspendu==1){//veut dire on est dqns le cqs active
if(CAS==0){
CAS ++;
printf("\n processus:1,mesure:1 \n");
alarm(2);
}else if(CAS==1){
CAS++;
printf("\n processus:1,mesure:2 \n");
alarm(2);
}else {
CAS=0;
printf("\n processus:2,mesure \n");
alarm(2);}
}
}
int main()
{
signal(SIGINT, handler1);
signal(SIGTSTP,handler2);
signal(SIGALRM,handler3);
while(1){
pause();
}
}
Merci d'avance!
Note:
il faut appuyer la combinaison ctr+c trois fois pour arrêter le programme
les processus sont activés ou réactivés à tout moment
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<signal.h>
volatile sig_atomic_t compteurPourCTRL_Z=0;
volatile sig_atomic_t compteurPourCTRL_C=0;
volatile sig_atomic_t CAS=0;
volatile sig_atomic_t suspendu=0;
static void handler1(int sigNum)
{
compteurPourCTRL_C ++;
if(compteurPourCTRL_C==3){
printf("\n processus termne\n");
kill(getpid(),SIGKILL);
}
}
static void handler2(int sigNum)
{
if(suspendu==0){
//suspendu=0 le cas initiale avant activation
suspendu=1;//suspendu==1 veut dire activé
printf("\n processus activé \n");
alarm(1);
}else if(suspendu==1){
suspendu=2;//suspendu=2 veut dire désactivé
printf("\n processus désactivé \n");
kill(getpid(),SIGTSTP);
}else if(suspendu==2){
suspendu=1;
printf("\n processus réactivé \n");
kill(getpid(),SIGCONT);
}
}
static void handler3(int sigNum)
{
if(suspendu==1){//veut dire on est dqns le cqs active
if(CAS==0){
CAS ++;
printf("\n processus:1,mesure:1 \n");
alarm(2);
}else if(CAS==1){
CAS++;
printf("\n processus:1,mesure:2 \n");
alarm(2);
}else {
CAS=0;
printf("\n processus:2,mesure \n");
alarm(2);}
}
}
int main()
{
signal(SIGINT, handler1);
signal(SIGTSTP,handler2);
signal(SIGALRM,handler3);
while(1){
pause();
}
}
A voir également:
- Réactiver un processus
- Reactiver compte facebook - Guide
- Comment réactiver un compte instagram - Guide
- Reactiver pave tactile - Guide
- Comment réactiver un compte yahoo désactivée en raison de son inactivité - Guide
- Processus hote windows rundll32 - Forum Virus
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, merci d'utiliser les balises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
pourquoi as-tu cette instruction?
pourquoi as-tu cette instruction?
kill(getpid(),SIGTSTP);
#include<stdio.h> #include<unistd.h> #include<stdlib.h> #include<signal.h> volatile sig_atomic_t compteurPourCTRL_Z=0; volatile sig_atomic_t compteurPourCTRL_C=0; volatile sig_atomic_t CAS=0; volatile sig_atomic_t suspendu=0; static void handler1(int sigNum) { compteurPourCTRL_C ++; if(compteurPourCTRL_C==3){ printf("\n processus termne\n"); kill(getpid(),SIGKILL); } } static void handler2(int sigNum) { if(suspendu==0){ //suspendu=0 le cas initiale avant activation suspendu=1;//suspendu==1 veut dire activé printf("\n processus activé \n"); alarm(1); }else if(suspendu==1){ suspendu=2;//suspendu=2 veut dire désactivé printf("\n processus désactivé \n"); kill(getpid(),SIGTSTP); }else if(suspendu==2){ suspendu=1; printf("\n processus réactivé \n"); kill(getpid(),SIGCONT); } } static void handler3(int sigNum) { if(suspendu==1){//veut dire on est dqns le cqs active if(CAS==0){ CAS ++; printf("\n processus:1,mesure:1 \n"); alarm(2); }else if(CAS==1){ CAS++; printf("\n processus:1,mesure:2 \n"); alarm(2); }else { CAS=0; printf("\n processus:2,mesure \n"); alarm(2);} } } int main() { signal(SIGINT, handler1); signal(SIGTSTP,handler2); signal(SIGALRM,handler3); while(1){ pause(); }
voici le code une autre fois,j'ai pas pu modifié ma question!
j'ai utilisé:
kill(getpid(),SIGTSTP);
pour mettre le programme en pause.