Réactiver un processus
Résolu
sarahchaima
Messages postés
12
Statut
Membre
-
sarahchaima Messages postés 12 Statut Membre -
sarahchaima Messages postés 12 Statut Membre -
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 inactif du systeme ✓ - Forum Windows
2 réponses
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
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.