// Szablon programu operujacego watkami
// kompilacja:	gcc  -o watki1 watki1.c -lpthread 

#include <pthread.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>


//   definicja funkcji stanowiacej cialo watku 
void *watek_a( ) {
// Odlaczenie watku - wariant 1
	pthread_detach(pthread_self());
		  
	pthread_exit(0);
}

main( ) {
	int w, n;
	pthread_t	tid;
	pthread_attr_t	attr;

// Tworzenie watku przylaczonego
	if ( w = pthread_create( &tid, NULL, watek_a, NULL ) ) {
		fprintf( stderr, "BLAD: %s\n", strerror( w ) );
		return 1;
	}
	
//	tworzenie watku odlaczonego - wariant 2
	pthread_attr_init( &attr );
	pthread_attr_setdetachstate( &attr, PTHREAD_CREATE_DETACHED );
	if ( w = pthread_create( &tid, &attr, watek_a, NULL ) ) {
		fprintf( stderr, "BLAD: %s\n", strerror( w ) );
		return 1;
	}
	pthread_attr_destroy( &attr );	
	
// Oczekiwanie na zakonczenie watku	
	if ( n = pthread_join( tid, NULL ) ) { 
		fprintf( stderr, "BLAD: %s\n", strerror( n ) );
		return 1;
	}

	return 0;
}



