Newsgroup: it.comp.os.linux.development
Titolo: Problemi con le IPC (semafori!)

Salve 
mentre m'accingevo a fare il mio primo programmino usando i semafori
mi sono imattuto nel seguente problema (invio un brevissimo scorcio di
codice):
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <time.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/wait.h>
int main(int argc,char **argv) {
    ...........
    union semun semarg;   /* PROBLEMA */
    ..........
    printf("Eseguito ! !\n");
    return 0;
}
La compilazione non va a buon fine e in output mi ritrovo il messaggio:
debug_sem2.c: In function `main':
debug_sem2.c:15: storage size of `semarg' isn't known
debug_sem2.c:15: warning: unused variable `semarg'
Non riesco a capire da cosa dipenda, oltretutto il file originale
è copiato da un testo che poi descrive pure i risultati.
Qualcuno sa dirmi da che dipende?
                                       Chef

 Qualcuno sa dirmi da che dipende?
che razza di tipo di dato è senum? Facendo una ricerca su google viene
fuori che è definito in <os.h>, header che non ho mai visto sotto unix.
Non è che hai cpoitao un esempio per un altro sistema operativo?

 debug_sem2.c:15: warning: unused variable `semarg'
 
#if defined(__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED)
	/* union semun is defined by including <sys/sem.h> */
#else
	/* according to X/OPEN we have to define it ourselves */
	union semun {
		int val; /* value for SETVAL */
		struct semid_ds *buf; /* buffer for IPC_STAT, IPC_SET */
		unsigned short *array; /* array for GETALL, SETALL */
		/* Linux specific part: */
		struct seminfo *__buf; /* buffer for IPC_INFO */
	};
#endif
E' specificato da qualche parte sugli info o sui man.
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! Asynchronous inputs are at the root of our race problems. !>-
                 D. Winker and F. Prosser

 E' specificato da qualche parte sugli info o sui man.
man semctl
NAME
       semctl - semaphore control operations
SYNOPSIS
       #include <sys/types.h>
       #include <sys/ipc.h>
       #include <sys/sem.h>
       #if defined(__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED)
       /* union semun is defined by including <sys/sem.h> */
       #else
       /* according to X/OPEN we have to define it ourselves */
       union semun {
               int val;                    /* value for SETVAL */
               struct semid_ds *buf;       /* buffer for IPC_STAT, IPC_SET */
               unsigned short int *array;  /* array for GETALL, SETALL */
               struct seminfo *__buf;      /* buffer for IPC_INFO */
       };
       #endif
       int semctl (int semid, int semnum, int cmd, union semun arg)
DESCRIPTION
       The  function  performs the control operation specified by cmd on the
semaphore set (or on the semnum-th semaphore of the set)
       identified by semid.  The first semaphore of the set is indicated by a
value 0 for semnum.
Ciao,
-- 
       Roberto Divia`             Love at first sight is one of the greatest
       =============             labour-saving devices the world has ever seen.
Mailbox: C02110                 CERN-European Organization for Nuclear Research
E-mail: 
Robert...@cern.ch
           CH-1211 GENEVE 23, Switzerland

...
