Ich habe ein Befehlszeilenprogramm, wo ich den Benutzer die aktuelle Zeit mit einem separaten Thread drucken möchten. Ich habe es derzeit so eingerichtet:Erstellen pthread, die aktuelle Zeit auf die Befehlszeile
Ich bekomme die Benutzereingabe, und vergleichen Sie es dann mit der Zeichenfolge time
. Wenn sie gleich sind, erstelle ich einen neuen Thread, der die Zeitvariable festlegt.
char currentTime[20];
if (strcmp(input, "time") == 0) {
pthread_t thread;
int rc = pthread_create(&thread, NULL, getTime, NULL);
if (rc) {
printf("ERROR; return code from pthread_create() is %d\n", rc);
exit(-1);
}
}
Meine getTime
Funktion:
void getTime() {
time_t rawtime;
struct tm * timeinfo;
time (&rawtime);
timeinfo = localtime (&rawtime);
sprintf(currentTime,"%s", asctime (timeinfo));
printf("%s", currentTime);
pthread_exit(NULL);
}
Ich erhalte eine Abort trap 6
Fehler aus, aber ich bekomme keine Fehler von pthread, also bin ich nicht sicher, was das Problem ist. Es scheint, als ob der Thread richtig erstellt wird.
Liest du tatsächlich etwas in 'Eingang'? 'void getTime() {' sollte 'void * getTime (void * arg) {' wie von 'pthread_create()' erforderlich sein, auch wenn Sie dem Thread keine Argumente übergeben müssen. –
Eine 'Pthread'-Funktion hat die Signatur:' void * getTime (void * arg) 'also müssen Sie zuerst Ihre' getTime() '-Funktion korrigieren. – user3629249