Problème avec la fonction setrlimit - C - Programmation
Marsh Posté le 20-03-2011 à 18:24:52
C'est un appel a setrlimit que tu voulais faire? parce que la c'est pas le cas:
Tu demandes la limite avec getrlimit, ca marche, la valeur de retour est 0,
comme 0 != 0 est faux, on sort pas, mais on boucle a l'infini avec printf("ca marche" );
La boucle infinie est donc logique il me semble.
A+,
Marsh Posté le 20-03-2011 à 18:40:24
Excuse moi. Avec le setrlimit ça marche en effet.
En fait j'ajoute des précisions à mon problème :
Ce code s'arrête bien directement :
int main()
{
struct rlimit limit;
int temps_ulimit = 0;
limit.rlim_cur = temps_ulimit;
limit.rlim_max = temps_ulimit;
if (setrlimit(RLIMIT_CPU, &limit) != 0) {
printf("wesh fou" );
exit(1);
}
while (1) {
/*pid_t pid_fils;
switch ( pid_fils = fork() ) {
case 0:
printf("fils" );
break;
default:
waitpid(pid_fils, NULL, 0);
break;
}*/
}
}
Par contre, si j'enlève les commentaires (avec le fork() et tout), ça boucle à l'infini :
int main()
{
struct rlimit limit;
int temps_ulimit = 0;
limit.rlim_cur = temps_ulimit;
limit.rlim_max = temps_ulimit;
if (setrlimit(RLIMIT_CPU, &limit) != 0) {
printf("wesh fou" );
exit(1);
}
while (1) {
pid_t pid_fils;
switch ( pid_fils = fork() ) {
case 0:
printf("fils" );
break;
default:
waitpid(pid_fils, NULL, 0);
break;
}
}
}
Comment ça se fait?
Marsh Posté le 20-03-2011 à 18:41:09
ikseg a écrit : Bonjour, |
Je ne sais pas ce que tu veux faire, mais sans appel a setrlimit, tu ne mets aucune limite !
getrlimit récupère juste la valeur.
Marsh Posté le 20-03-2011 à 18:08:01
Bonjour,
Voici mon code :
int main()
{
while (1) {
struct rlimit limit;
int temps_ulimit = 0;
limit.rlim_cur = 0;
limit.rlim_max = 0;
if (setrlimit(RLIMIT_CPU, &limit) != 0) {
printf("wesh fou" );
exit(1);
}else {printf("ca marche" ); }
}
}
Comment ca se fait que la boucle tourne à l'infini? J'ai pourtant mis 0 comme délai souple et dur!
Meme quand je mets une/5/10 seconde, ca ne marche pas...
Message édité par ikseg le 20-03-2011 à 18:24:05