#include h>
h> //...standardowe wejście/wyjście
#include h>
h> //...komunikat błędu perror()
#include h>
h> //...identyfikacja procesu geppid()
#include h>
h>//...stąd deklaracje dot. semaforów
#include h>
h> //...maski uprawnień, choć można inaczej
//skoro czytamy z linii komend, to nagłówek main() ...
int main( int argc,char** argv )
{
int nsems,semflag,semid;
nsems; //...zmienna dla ilość semaforów w tworzonym zbiorze
int semflag; //...zmienna dla maski tworzenia semaforów
key_t key;
key; //...zmienna dla klucza identyfikującego zbiór
if( argc>1 )
) //...sprawdźmy na początek, czy wywołanie było poprawne
{
sscanf( argv[1],"%d",&nsems )
); //...odczytujemy ilość semaforów
if( nsems>0 )
) //...sprawdźmy, tak na wszelki wypadek
{
key = ftok( "/tmp",'a'+'t'+'h'+'r'+'i'+'r' );
//...taki sobie komunikat diagnostyczny
printf( "[pid=%u] tworzy zbiór %d semaforów [key=%x]\n",
(unsigned)getpid(),nsems,(unsigned)key semaforów
[key=%x]\n",(unsigned)getpid(),nsems,(unsigned)key );
//...przygotujemy maskę tworzenia semaforów
semflag = IPC_CREAT | S_IRUSR | S_IWUSR;
semid = //...i to już wszystkie czynności przygotowawcze do semget()
if( semget( key,nsems,semflag );
if( semid==-1 ){ )==-1 ) //...jeżeli,to kłopot
{ perror( "\tsemget()..." ); exit( 3 ); }
else
{
if( semctl( semid,0x0,IPC_RMID) == -1)
{ perror("\tsemctl()"); exit(1); }
/*- a dalej to już tylko diagnostyka ewentualnych błędów -*/
}
else{printf("\tbłędna ilość semaforów (n=%d)\n",nsems );exit(2);}
}
else
{ printf( "\t%s [%s]\n%s",argv[0],"n",
"\tn -rozmiar tworzonej tablicy semaforów\n" ); exit( 1 ); }
return 0;
}}}
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}