Ich benutzte localtime auf meinem BeagleBone Black, um Ereignisse zu stempeln. Ich führe eine Multithread-Anwendung aus und stelle fest, dass Localtime nicht Thread-sicher ist. Also wechselte ich zu localtime_r und dies erzeugt einen Segmentierungsfehler. Anbei finden Sie das Bild.Wie löst man localtime_r Zeitzonensegmentierung Fehler?
- ausgeführt ich das gleiche Programm auf meinem Desktop, das x86_64-System mit einer anderen Linux-Kernel-Version ist und es funktioniert. Versucht es erneut mit einem anderen 64-Bit-System mit einem neueren Kernel und es funktioniert nicht.
- Nicht viele Literatur zu diesem Thema online gefunden. This hat einige Informationen, ist aber nicht klar.
Irgendwelche Vorschläge, wie ich das lösen kann? Nicht sicher, warum es auf einigen Systemen und nicht auf anderen Systemen funktioniert.
Update 1: Ich habe den Code geschrieben
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
#include <stdbool.h>
int main(){
int day, month, hour, minute, second, year;
time_t t = time(NULL);
struct tm *result;
struct tm *tm = localtime_r(&t, result);
day = result->tm_mday;
month = (result->tm_mon+1);
hour = result->tm_hour;
minute = result->tm_min;
second = result->tm_sec;
year = (result->tm_year-100);
printf("%d : %d : %d : %d:%d:%d\n", month, day, year, hour, minute, second);
return 0;
}
wäre besser, wenn Sie Ihren Code hier posten könnte. – sas
Hat den Code veröffentlicht. – am3