Le PETIT avancement
This commit is contained in:
parent
a918c301ce
commit
ff442426c1
24
SCR3.1/TP4/mytimeout.c
Normal file
24
SCR3.1/TP4/mytimeout.c
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
|
void kill_son(int){
|
||||||
|
if
|
||||||
|
int main(int argc, char **argv){
|
||||||
|
if (argc < 3){
|
||||||
|
printf("Usage : %s <nbsec> <com> [arg]", argv[0]);
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
int secondes = (int) strtod(argv[1], NULL);
|
||||||
|
pid_t p;
|
||||||
|
p = fork();
|
||||||
|
switch(p){
|
||||||
|
case 0 :
|
||||||
|
|
||||||
|
execl("/usr/bin/sh" , "-c", argv[2])
|
||||||
|
case -1:
|
||||||
|
|
||||||
|
default:
|
||||||
|
|
@ -11,9 +11,12 @@ uint64_t shots = 0,
|
|||||||
shots_in = 0;
|
shots_in = 0;
|
||||||
|
|
||||||
double pi = 0, t1;
|
double pi = 0, t1;
|
||||||
|
sigset_t inset, quiset, alset;
|
||||||
|
|
||||||
|
|
||||||
void int_handler(int){
|
void int_handler(int){
|
||||||
alarm(0);
|
alarm(0);
|
||||||
|
sigprocmask(SIG_BLOCK, &inset, NULL);
|
||||||
char c;
|
char c;
|
||||||
printf("Le programme tourne depuis %f secondes, voulez-vous vraiment l'arrêter ? (O)ui / (N)on", tstamp() - t1);
|
printf("Le programme tourne depuis %f secondes, voulez-vous vraiment l'arrêter ? (O)ui / (N)on", tstamp() - t1);
|
||||||
c = getchar();
|
c = getchar();
|
||||||
@ -22,21 +25,26 @@ void int_handler(int){
|
|||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
return;
|
return;
|
||||||
|
sigprocmask(SIG_UNBLOCK, &inset, NULL);
|
||||||
alarm(5);
|
alarm(5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void alarm_handler(int){
|
void alarm_handler(int){
|
||||||
|
sigprocmask(SIG_BLOCK, &alset, NULL);
|
||||||
printf("Valeur de pi en cours = %f\n", pi);
|
printf("Valeur de pi en cours = %f\n", pi);
|
||||||
printf("Nombre de tirs effectués = %f\n", (double) shots);
|
printf("Nombre de tirs effectués = %f\n", (double) shots);
|
||||||
alarm(5);
|
alarm(5);
|
||||||
|
sigprocmask(SIG_UNBLOCK, &alset, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void quit_handler(int){
|
void quit_handler(int){
|
||||||
alarm(0);
|
alarm(0);
|
||||||
|
sigprocmask(SIG_BLOCK, &quiset, NULL);
|
||||||
shots = 0;
|
shots = 0;
|
||||||
shots_in = 0;
|
shots_in = 0;
|
||||||
t1 = tstamp();
|
t1 = tstamp();
|
||||||
|
sigprocmask(SIG_UNBLOCK, &quiset, NULL);
|
||||||
alarm(5);
|
alarm(5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,6 +53,12 @@ int main(int argc,char * argv[])
|
|||||||
double x,y;
|
double x,y;
|
||||||
t1 = tstamp();
|
t1 = tstamp();
|
||||||
alarm(5);
|
alarm(5);
|
||||||
|
sigaddset(&alset, SIGINT);
|
||||||
|
sigaddset(&alset, SIGQUIT);
|
||||||
|
sigaddset(&inset, SIGALRM);
|
||||||
|
sigaddset(&inset, SIGQUIT);
|
||||||
|
sigaddset(&quiset, SIGINT);
|
||||||
|
sigaddset(&quiset, SIGALRM);
|
||||||
set_signal_handler(SIGALRM, &alarm_handler);
|
set_signal_handler(SIGALRM, &alarm_handler);
|
||||||
set_signal_handler(SIGINT, &int_handler);
|
set_signal_handler(SIGINT, &int_handler);
|
||||||
set_signal_handler(SIGQUIT, &quit_handler);
|
set_signal_handler(SIGQUIT, &quit_handler);
|
||||||
|
8
SCR3.1/TP4/test.c
Normal file
8
SCR3.1/TP4/test.c
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
int t[4] = {1, 2, 3, 4}, u[2] = t[1:];
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user