Mark Whitley | 5ec5415 | 2001-03-12 20:00:00 +0000 | [diff] [blame] | 1 | /* |
| 2 | * tst-syslogd.c - tests concurrent threads calling syslog |
| 3 | * |
| 4 | * build with: gcc -Wall tst-syslogd.c -lpthread |
| 5 | */ |
| 6 | |
| 7 | #include <stdio.h> |
| 8 | #include <pthread.h> |
| 9 | #include <syslog.h> |
| 10 | #include <unistd.h> |
| 11 | |
| 12 | void *log_func(void *arg) |
| 13 | { |
| 14 | int i; |
| 15 | int thrid = (int)arg; |
| 16 | |
| 17 | openlog(NULL, LOG_PERROR | LOG_PID, LOG_USER); |
| 18 | for (i = 0; i < 10; i++) { |
| 19 | syslog(LOG_DEBUG, "thread %i iter %i\n", thrid, i); |
| 20 | sleep(thrid); /* this mixes things up a bit */ |
| 21 | } |
| 22 | closelog(); |
| 23 | |
| 24 | return NULL; |
| 25 | } |
| 26 | |
| 27 | int main(int argc, char **argv) |
| 28 | { |
| 29 | pthread_t thr1, thr2, thr3; |
| 30 | int id1 = 1; |
| 31 | int id2 = 2; |
| 32 | int id3 = 3; |
| 33 | |
| 34 | pthread_create(&thr1, NULL, log_func, (void *)id1); |
| 35 | pthread_create(&thr2, NULL, log_func, (void *)id2); |
| 36 | pthread_create(&thr3, NULL, log_func, (void *)id3); |
| 37 | |
| 38 | pthread_join(thr1, NULL); |
| 39 | pthread_join(thr2, NULL); |
| 40 | pthread_join(thr3, NULL); |
| 41 | |
| 42 | return 0; |
| 43 | } |
| 44 | |