45 lines
		
	
	
		
			837 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			837 B
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 *  tst-syslogd.c - tests concurrent threads calling syslog
 | 
						|
 *
 | 
						|
 *  build with: gcc -Wall tst-syslogd.c -lpthread
 | 
						|
 */
 | 
						|
 | 
						|
#include <stdio.h>
 | 
						|
#include <pthread.h>
 | 
						|
#include <syslog.h>
 | 
						|
#include <unistd.h>
 | 
						|
 | 
						|
void *log_func(void *arg)
 | 
						|
{
 | 
						|
	int i;
 | 
						|
	int thrid = (int)arg;
 | 
						|
 | 
						|
	openlog(NULL, LOG_PERROR | LOG_PID, LOG_USER);
 | 
						|
	for (i = 0; i < 10; i++) {
 | 
						|
		syslog(LOG_DEBUG, "thread %i iter %i\n", thrid, i);
 | 
						|
		sleep(thrid); /* this mixes things up a bit */
 | 
						|
	}
 | 
						|
	closelog();
 | 
						|
 | 
						|
	return NULL;
 | 
						|
}
 | 
						|
 | 
						|
int main(int argc, char **argv)
 | 
						|
{
 | 
						|
	pthread_t thr1, thr2, thr3;
 | 
						|
	int id1 = 1;
 | 
						|
	int id2 = 2;
 | 
						|
	int id3 = 3;
 | 
						|
 | 
						|
	pthread_create(&thr1, NULL, log_func, (void *)id1);
 | 
						|
	pthread_create(&thr2, NULL, log_func, (void *)id2);
 | 
						|
	pthread_create(&thr3, NULL, log_func, (void *)id3);
 | 
						|
 | 
						|
	pthread_join(thr1, NULL);
 | 
						|
	pthread_join(thr2, NULL);
 | 
						|
	pthread_join(thr3, NULL);
 | 
						|
 | 
						|
	return 0;
 | 
						|
}
 | 
						|
 |