1 /* Make sure we use the POSIX version of strerror_r() on Linux. */ 2 #define _XOPEN_SOURCE 600 3 4 #include <pthread.h> 5 #include <stdio.h> 6 #include <errno.h> 7 #include <string.h> 8 9 10 void* thr2 ( void* v ) 11 { 12 char errstr[128]; 13 FILE* f = fopen("bogus2", "r"); 14 strerror_r(errno, errstr, sizeof(errstr)); 15 printf("f = %ld, errno = %d (%s)\n", (long)f, errno, errstr); 16 return NULL; 17 } 18 19 void* thr3 ( void* v ) 20 { 21 char errstr[128]; 22 FILE* f = fopen("bogus3", "r"); 23 strerror_r(errno, errstr, sizeof(errstr)); 24 printf("f = %ld, errno = %d (%s)\n", (long)f, errno, errstr); 25 return NULL; 26 } 27 28 29 int main ( void ) 30 { 31 char errstr[128]; 32 FILE* f; 33 pthread_t tid2, tid3; 34 pthread_create(&tid2, NULL, &thr2, NULL); 35 pthread_create(&tid3, NULL, &thr3, NULL); 36 f = fopen("bogus", "r"); 37 strerror_r(errno, errstr, sizeof(errstr)); 38 printf("f = %ld, errno = %d (%s)\n", (long)f, errno, errstr); 39 pthread_join(tid2, NULL); 40 pthread_join(tid3, NULL); 41 return 0; 42 } 43 44