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