razuki
Messages postés242Date d'inscriptionlundi 17 décembre 2007StatutMembreDernière intervention 5 décembre 2012
-
17 août 2009 à 18:05
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 2010
-
17 août 2009 à 20:06
Bonjour,
j'ai une erreur de segmentation quand je compile :
- je suis débutant en C.
- j'utilise un thread selon ce simple et court exemple :
- je veux passer en param la structure thread_handle_t
Ma question :
- est ce que c'est la bonne manière d'écrire l'argument de ask_for_login :
thread_handle_t *th;
pthread_create(&thread_lp, NULL, ask_for_login,(void *)th)
- est ce que j'aurai du déclarer une structure au lieu d'un pointeur vers une structure, cad :
thread_handle_t th;
mon code :
void* ask_for_login(void* data) {
thread_handle_t *th;
th = (thread_handle_t *)data;
while((*th->use_lp 0) && (*th->use_sc 0)){
printf("ask_for_login...\n");
login = getchar();
*th->use_lp = 1;
}
pthread_exit(NULL);
return NULL;
}
int main (void) {
pthread_t thread_lp;
void* status;
int cpt = 0;
thread_handle_t *th;
*th->use_sc = 0;
*th->use_lp = 0;
printf("veuillez inserer votre carte ou entrer votre login\n");
/* On attend que l'user entre son login */
if (pthread_create(&thread_lp, NULL, ask_for_login,(void *)th)) {
perror("pthread_create");
printf("erreur : pthread_create\n");
exit(EXIT_FAILURE);
}
while((*th->use_lp 0) && (*th->use_sc 0)){
printf("j'attend l'insertion d'une carte...\n");
sleep(1);
cpt ++;
if(cpt == 6){
*th->use_sc = 1;
//pthread_kill(thread_lp, 1);
}
}
if(*th->use_sc == 1){
//tuer thread_L;
printf("Carte inseree, bonjour Aro. Veuillez entrer votre code PIN :\n");
sleep(3);
}
else{
printf("Veuillez entrer votre mot de passe\n");
sleep(3);
}
printf("Authentification terminee\n");
return (EXIT_SUCCESS);
}