#include ...operacje wejścia/wyjścia #include ...maski uprawnień (choć niekonieczne) #include ...stała OCREAT #include ...semafory POSIX, w ogólności (konieczne) int main( int argc,char **argv ) { sem_t *id; ...identyfikator tworzonego semafora int counter; ...licznik semafora (pomocniczo) char name[] = "km"; ...nazwa semafora (jeżeli nazwany, jakaś musi być) niektóre implementacje semaforów POSIX wymagają aby nazwa zaczynała się od '/', czyli będzie char name[] = "km"; counter = 7; ...inicjujemy zmienną dla licznika ...spróbujmy w takim razie utworzyć/otworzyć semafor (nazwany) if((id=sem_open(name,O_CREAT,S_IRUSR|S_IWUSR,(unsigned)counter))!=SEM_FAILED) { ...jeżeli się udało, to ciąg dalszy printf( "*** otwarto semafor\t%s\n",name ); if( !sem_getvalue( id,&counter ) ) ...odczyt licznika { printf( " licznik semafora\t%d\n",counter ); } else{ perror( "*** sem_getvalue()\t" ); } if( !sem_close( id ) ){ printf( "*** zamknięto semafor\t%s\n",name ); } else{ perror( "*** sem_close()\t" ); } /*...na wstępie pozostawmy te linie w komentarzu if( !sem_unlink( name ) ){ printf( "*** usunięto semafor\t%s\n",name ); } else{ perror( "*** sem_unlink()\t" ); } */ } else{ perror( "....sem_open()...." ); } ...cóż, gdyby coś poszło nie tak return 0; }