mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: Domanda da Newbies

Sapete dirmi qual'è il codice ASCII corrispondente al tasto invio (CR+LF)?
Grazie!
--
 Non importa dove... basta che le rotelle girino sempre!
 
http://members.xoom.it/Rotellaro
 
http://giocoleria.virtualave.net
 ICQ UIN #42292922

10 + 13
10 x lf
13 x cr


...


you wrote :
#Sapete dirmi qual'è il codice ASCII corrispondente al tasto invio (CR+LF)?
Non esiste un unico codice ASCII ma la coppia 13,10 per CR,LF
Andrea Laforgia        (
andrea_...@bigfoot.com
)
----------------------------------------------------
There is nothing better for understanding a kangaroo
than seeing it jump.
----------------------------------------------------

 Non esiste un unico codice ASCII ma la coppia 13,10 per CR,LF
O forse intendeva chiedere il simbolo da utilizzare nei programmi? In
questo caso è '\n'.
EMG

...


you wrote :
#> > Sapete dirmi qual'è il codice ASCII corrispondente al tasto invio (CR+LF)?
#> 
#> Non esiste un unico codice ASCII ma la coppia 13,10 per CR,LF
#
#O forse intendeva chiedere il simbolo da utilizzare nei programmi? In
#questo caso è '\n'.
...e che comunque, in generale, proprio per la compatibilità tra le
piattaforme assicurata dallo standard, non corrisponde necessariamente
alla coppia CR+LF...


Newsgroup: it.comp.lang.c
Titolo: qsort()

Salve a tutta la lista.
Mi trovo nella condizione di dover ordinare un'array di double.
Usando Visual C++ ho trovato la func in oggetto, pero' non ho
capito come si usa la func 'compare()' passata come parametro.
Avreste un'esempio che non sia quello dell'help di VC++ ?
Grazie in anticipo... PAOLO.

you wrote:

Ti rispondo su it.comp.lang.c con un esempio in C++ standard.

 Mi trovo nella condizione di dover ordinare un'array di double.
#include <stdio.h>
#include <stdlib.h>
int compara_double(const void *a, const void *b)
{
        const double *da = (const double *) a;
        const double *db = (const double *) b;
        return (*da > *db) - (*da < *db);
}
int main(void)
{
        double array[] = { 1.2, 0.5, 1.3, 3.4, 5.6, 0.9, 0.2 };
        int i, size = sizeof array / sizeof array[0];
        qsort(array, size, sizeof(double), compara_double);
        for (i = 0; i < size; i++)
                printf("%3.1f ", array[i]);
        putchar('\n');
        return 0;
}
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

Grazie tante.  :-)
Paolo.
Newsgroup: it.comp.lang.c
Titolo: Aiuto! Problemi con Miracle

Ciao a tutti.
Ho da poco inziato a studiare il C. Come riferimento uso il classico
"Linguaggio C" di Kernighan e Ritchie. Come compilatore non ho nulla di
meglio di Miracle, compilatore shareware. Il linker è un comune link.exe
Microsoft.
Ebbene, il primo tentativo (il mitico "Hallo, world!") ha funzionato
correttamente (e ci mancherebbe!), ma già il secondo ha avuto esito
disastroso. Questo è il sorgente:
#include <stdio.h>
main()
{
    int fahr, celsius;
    int lower, upper, step;
    lower = 0;
    upper = 300;
    step = 20;
    fahr = lower;
    while (fahr <= upper)
    {
        celsius = 5 * (fahr-32) / 9;
        printf("%d\t%d\n", fahr, celsius);
        fahr = fahr + step;
    }
}
Che fornisce questo risultato (ho tagliato i valori centrali):
0       7264
20      7275
40      4
60      15
[...]
260     126
280     137
300     148
Le prime due righe sono errate (i valori corretti dovrebbero essere: 0 -17;
20 -6). Perché?
Dov'è il problema? A me, da profano, sembrano valori negativi interpretati
come unsigned. Ma ha un senso?
C'è qualche altro compilatore C shareware o freeware? Ho visto il DJGPP, ma
solo capire quali files devo scaricare mi ha fatto impazzire... il solito
stile GNU.
Grazie per le vostre risposte!
Lorenzo
---
"Omnem crede diem tibi diluxisse supremum"
Lorenzo "Loz" Novara
E-Mail: 
l...@iol.it
Web: 
http://freeweb.aspide.it/freeweb/loz

disastroso. Questo č il sorgente:

Newsgroup: it.comp.lang.c
Titolo: Siti C/C++

Mi consigliate qualche sito su C e C++ (guide, esempi, programmi .... etc
etc etc)
Grazie
ICQ #40520499

www.programmazione.it
mi sembra abbastanza buono.
Ciao.
Francesco M. wrote in message ...

Newsgroup: it.comp.lang.c
Titolo: problema c

Adesso ho preso gusto a parlare con persone molto piu competenti di me
!!!eehhehehheehh
Scusate ...
Dovrei dare dei comandi veloci sul programma anzi:es case 's' stampa
esecuzione del programma s stampa +invio
invece io vorrei un comando del tipo s esecuzione immediata senza invio
ho provato con il getch ma non e  ansi e lo usa sotto dos conio.h ....
vi ringrazzio della risposta anticipatamente ............
                                                 By Adry

ho provato con il getch ma non e  ansi e lo usa sotto dos conio.h ....
Purtroppo non esiste un modo portabile per fare cio' che chiedi.
L'operazione di richiesta di un tasto da analizzare subito, senza
ricorrere alla fine dell'input, coinvolge operazioni a basso livello
con la tastiera che lo standard non deve/puo' contemplare.
Credo che l'unico modo per risolvere la cosa, sia utilizzare funzioni
non portabili come getch().

Newsgroup: it.comp.lang.c
Titolo: Neofita

Salve ho un piccolo problema,devo sviluppare un talk client server in c
utilizzando le sistem call di Linux.
Allora ho deciso di installare Linux a casa. (Mandrake 8.1)
Ho compilato dei file utilizzando gcc -o nomeexe nomefile.c ma quando da
shell digito
nomeexe mi dice che non conosce tale comando.
Come faccio a farlo eseguire?
P.S. Se qualcuno di voi ha già fatto un prog del genere me lo può inviare?
Grazie


Talking about music is like dancing about architecture.
                -- Laurie Anderson

Newsgroup: it.comp.lang.c
Titolo: Cerco codice d'esempio C/C++ per l' IPC in Linux

Salve.
Avrei bisogno di esempi concreti di codice in C/C++ ,
per l'ambiente Linux,
relativo all' IPC (Inter Process Communication) .
In pratica vorrei vedere dei semplici
e piccoli programmi "esemplari"
per i seguenti argomenti :
- semafori ; (syscall sem---)
- utilizzo del costrutto Monitor (non la sola implementazione...) ;
  (in questo caso preferisco il C++ eheh)
- memoria condivisa ; (syscall shm---)
- sincronizzazione tra processi .
- IPC nell'accesso ai files .
Nota : già ho visto le man pages complete di tutte le system calls ,
            e ne conosco le modalità d'uso .
Esiste qualche sito con dei programmi d'esempio sugli argomenti suddetti ??
(che si tratti di siti in italiano o in inglese, fa lo stesso)
ah ovviamente.....che sia compilabile in ambiente linux .
Grazie per l'attenzione .
Saluti .
CiccioTux
p.s.
una curiosità ..... in ambiente Windows (es. XP)
come si usa l' IPC ?? il solo riferimento sono le API Win32 ??
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

   
Fai riferimento alla Linux Programming Bible ;-)
Alcuni esempi:
Shared ram:
http://www.cs.cf.ac.uk/Dave/C/node27.html
Message queue:
http://www.sfr-fresh.com/linux/docs/lpg-0.4.tar.gz:a/LPG/examples/ipc/msgtool.c
Semafori:
http://www.csm.astate.edu/~rossa/semab.html
Etc....
B.
Newsgroup: it.comp.lang.c
Titolo: 30 e lode! Cin cin a tutti!

Hic! Hic! (singhiozzo per lo champagne che vi sto offrendo!)
Grazie a chi mi ha dato una mano, e sberleffi a chi mi ha ignorato...
:-PPPP~~~
 ;-)
Scherzi a parte, pur essendo stato costretto a passare la notte in
bianco per finire il programma, oggi l'esame è andato
meravigliosamente bene!
Il mio problema con il null pointer assignment di qualche giorno fa
era dovuto ad una stramaledettissima funzione che ho messo nel
programma con copia&incolla da un altro sorgente che avevo scritto
tempo prima...
Purtroppo c'era una riga che avevo dimenticato di togliere che faceva
scrivere in NULL!
Grazie ancora, e a buon rendere!

Complimenti!! :-) 


 wrote in message
news:7t0fjt4d4k1gvklfl...@4ax.com...

L'impegno viene sempre ripagato .... prima o poi.
Congratulazioni.
Bob Rock

Newsgroup: it.comp.lang.c
Titolo: Strutture e puntatori

Salve,
avrei un problema.
Non riesco a usare un puntatore alla struttura.
Io ho fatto cosi'
prova.h
typedef struct _Prova
{
  unsigned a;
} *p_prova;
Adesso, ho provato in piu' maniere ad utilizzare quel puntatore per poter fare
p_prova->a=200;
ma in qualsiasi maniera ho provato ho sempre sbagliato qualcosa.
Gentilmente qualcuno, puo' dirmi come fare?
grazie

 ma in qualsiasi maniera ho provato ho sempre sbagliato qualcosa.
#include <stdio.h>
typedef struct prova {
  unsigned a;
} _Prova;
  int main( void )
  {
    _Prova *p_prova;
    p_prova->a = 200;
    printf( "%d\n", p_prova->a );
    return 0;
  }
 
typedef serve a creare dei "sinonimi" ai tipi di dato che definisci.
Non sono sicuro dell'utilizzo che ne fai li sopra: perchè un puntatore ?
Ciao,
-- 
oOO()             |Nicholas Wieland|
/ _/              |nicholas_wieland|
|/ [ Step on the ]|    @
yahoo.it
   |
\_)[  right foot ]|________________|

 avrei un problema.

p_prova->a=200;
Secondo me se la parole chiave "struct" nella definizione di una
struttura la usi davvero... le cose tendono a funzionare vagamente
meglio....
Augusto Pucci
http://www.neuraldaemon.com/pucci

     printf( "%d\n", p_prova->a );
               ^^ Cazzatina... :) 
riciao,


 Gentilmente qualcuno, puo' dirmi come fare?
Due errori. il primo e' che p_prova e' diventato un "tipo", pertanto
scrivere
   p_prova->a = 200;
e' come scrivere
  char*->... = ...;
Non funziona.
Il secondo e' che se non allochi la struttura il rischio che il programma
crashi e' piuttosto alto.
pertanto devi scrivere
p_prova pP = NULL;
pP = calloc(1, sizeof(*pP));
if(NULL != pP)
  pP->a = 200;
Un mio consiglio. Lascia perdere il typedef dei puntatori... e' cosi' bello
vedere in giro gli asterischi :-)
C:\>iao Angelo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

meglio....
Se poi l'allochi aanche l'entità a cui fai puntare.... meglio ancora
direi.
Augusto Pucci
http://www.neuraldaemon.com/pucci

} *p_prova;
p_prova p = malloc(sizeof *p);
p->a = 500;

Grazie infinite credo d'aver capito gli errori che facevo!
grazie
Newsgroup: it.comp.lang.c
Titolo: compilatore c

Salve a tutti
sapreste indicarmi un buon compilatore per c freeware o shareware?
Il mio professore mi ha indirizzato su lcc-win32 ma mi ci trovo piuttosto
male.
grazie a tutti


E' un buon compilatore, ma devo ammettere che non e' molto user
friendly per chi lo vede per la prima volta.
Prova il BCC (dal sito della Borland) io mi sono trovato bene agli
inizi... oppure il DEV-C (
http://www.bloodshed.net
).
Se preferisci le interfacce testuali stile turbo-C c'e' il Rhide per
il DJGPP (
www.delorie.com/djgpp
).
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."

 il DJGPP (
www.delorie.com/djgpp
).
o meglio ancora proprio il Borland Turbo C 2.01 o il successivo Turbo C++
1.01, che scarichi gratuitamente dalla sezione dedicata alla comunità di
sviluppatori Borland, sul sito della stessa. Per entrare nella sezioen
bisogna prima loggarsi, previa registrazione semplice e gratuita. il link
diretto è 
http://community.borland.com/museum/
--
--
Lello Mele
--
HOMEPAGE: 
http://www.lellomele.it
eMAIL   : lellomele@@
libero.it

Newsgroup: it.comp.lang.c
Titolo: Un aiuto per favore

Grazie per l'attenzione.
Sono in un tremendo stallo, il problema e':  dato un registo di classe
verificare le presenze
degli alunni distibuite su 5 ore, con eventuale modifica delle presenze di
ogni singolo studente.
Salvare su il tutto su due file
La verifica deve essere effetuata tramite l'immissione della data.
Il problema mi si ripropone quando verifico la data associato allo studente.
Ho provato anche la funzione "bool" per la modifica delle presenze ma con
scarso risultato.
Potete illuminarmi per questo problema?
Grazie infinitamente.

 scarso risultato.
Non si capisce un accidente ! Cosa sarebbe la funzione "bool" ??
Cerca di essere piu' chiaro !
g.

magari posta un po' di codice scritto da te!
Ph.
Newsgroup: it.comp.lang.c
Titolo: link a libreria condivisa

Salve a tutti,
ho scritto una piccola libreria contenente l'implementazione di alcune
funzioni/procedure che uso spesso. Il mio problema č che, volendola
condivisibile, non riesco a linkarla e mi viene segnalato l'errore:
/usr/bin/ld: cannot find -lmylib
collect2: ld returned 1 extit status 
Premettendo che uso Linux, le operazioni che ho fatto sono state:
- posiziono il file header mylib.h in usr/include
- creo il file oggetto con gcc -fPIC -c mylib.c
- gcc -shared -Wl,-soname,libmylib.so.1 -o libmylib.so.1.0.1 mylib.o
  ( la libreria condivisibile viene creata, sembra correttamente ) 
- posiziono la libreria ottenuta in usr/lib
Quando scrivo: gcc -o nome_eseguibile nome_file.o -lmylib ottengo
l'errore
di cui sopra. Se invece di una libreria condivisibile, ne creo una
statica e la posiziono sempre in usr/lib, allora funziona.
Se qualcuno fosse cosě gentile da indicarmi dove sbaglio e a darmi
qualche suggerimento....
Grazie anticipatamente,
Andrea

 qualche suggerimento....
it.comp.os.linux.development
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
Ok, grazie mille!! E' da poco che "bazzico" il NG e non mi ero reso conto di 
essere OT.
Ciao,
Andrea

Newsgroup: it.comp.lang.c
Titolo: prototipi

Ma perchč devo scrivere i prototipi delle mie funzioni utente? Il programma
funziona benissimo anche se scrivo le funzioni stesse senza prototipo,
indipendentemente dal loro ordine.

 indipendentemente dal loro ordine.
Prova ad avere due files f1.c e f2.c
In f1.c compare:
    #include <stdio.h>
    /* Nessun prototipo di moltiplicazione ! */
    int main(int argc, char * argv[]) {
       double prod = moltiplicazione(3.0, 3.0);
       printf("prod = %g\n", prod);
    }
e in f2.c compare:
    int moltiplicazione(int x, int y) {
       return x*y;
    }
Se compili e linki ed esegui, cosa ti aspetti come risultato?
- Dario


Se scrivi un programma "Hello world!" certo che funziona.
Se scrivi qualcosa di piu' complesso non funziona e se funziona funziona per
caso.
Questo perche' se chiami una funzione prima di averla definita, come fa il
compilatore a sapere che tipo di argomenti utilizza?
Se poi la funzione e' in un altro modulo o in una libreria ?
Ciao
Giuseppe

 indipendentemente dal loro ordine.
----------file.c--------------
#include <stdio.h>
void hello(void){
    printf("Hello\n");
    return;
}
int main(void){
    hello();
    return 0;
}
------------------------------
----------file2.c--------------
#include <stdio.h>
int main(void){
    hello();
    return 0;
}
void hello(void){
    printf("Hello\n");
    return;
}
-----------------------------
Questi due file vengono compilati?
Newsgroup: it.comp.lang.c
Titolo: programmi su stringhe

Vi ringrazio per avermi risposto.
Alla funzione toupper ci avevo pensato anke io.
Intendevo cercare la prima lettera di ogni parola usando un while fino
al ritrovamento nella stringa di un EOF ma la lettera deve essere
l'iniziale...
Devo considerare anke spazi o new line?
Qualke chiarimento in più sulla lettura della stringa?
Per il secondo esercizio non ho ancora le idee chiarissime.
Vi prego di aiutarmi il + possibile ke lunedì devo consegnare tutto.
Grazie ancora.
Paolo

usa un while con getchar,fino a quando il carattere è diverso da uno spazio
o da un newline..
hai una bella settimana di tempo per imparare queste funzioni
semplici...penso ce la puoi fare.
ste

Newsgroup: it.comp.lang.c
Titolo: Scrivere driver

Dove si può trovare qualcosa (libro o tutorial) che permetta di scrivere
driver o anche programmi più complicati in C o in C++?

 driver o anche programmi più complicati in C o in C++?
Col C standard ANSI mi sa che centra veramente poco, ma beccati Linux 
Device Drivers di A.Rubini della O'Reilly, disponibile anche liberamente 
online a
 
http://www.xml.com/ldd/chapter/book/index.html
-- 
   |   \    \  | ___|_  |_  | ianezz a casa sua... :-)
   |  _ \  | \ | _|    /   /  Visita il LinuxTrent a
  _|_/  _\_|  _|____|___|___| 
http://www.linuxtrent.it

Newsgroup: it.comp.lang.c
Titolo: file binari e record a dimesnione fissa

ciao
sperimentando l'accesso binario ho notato che anche cancellando un 
record, bisogna comunque lasciare lo spazio per contenere la struttura 
dati, almeno nei record a lunghezza fissa, pero' cosi' un file.dat da me 
creato ï¿œ cresciuto a dismisura in poco tempo.
Ci sono soluzioni in merito?
grazie

Jupiter ha scritto:

Se (*se*) ho capito bene, il problema ï¿œ che hai N record da salvare e un 
flag per dire ok/cancellato, per cui i nuovi record vengono aggiunti 
alla fine mentre quelli vecchi continuano a occupare spazio.
In questo caso, la soluzione di gran lunga piï¿œ semplice ï¿œ riscrivere il 
file tenendo slo i record ancora validi(*).
Se il problema invece era diverso scusami :D
(*) "riscrivere" ï¿œ un'abbreviazione per "scrivi i record validi in 
filetemporaneo.dat e poi sostituiscilo a file.dat"; se riscrivi 
direttamente file.dat un blackout/etc puï¿œ portare a perdere 
irrimediabilmente (parte di) file.dat

Jupiter ha scritto:

riutilizzare i record vuoti per metterci i nuovi dati.
E.

 dati
Come hai realizzato la cancellazione dei record? Penso che il problema
sia
nell' algoritmo che hai deciso di implementare.
ciao
Giacomo
Newsgroup: it.comp.lang.c
Titolo: C primi passi

Ciao,
come da soggetto non ho esperienza in c.
C'e' un sistema per ridimensionare dinamicamente gli array? 
Grazie
Massimiliano

 C'e' un sistema per ridimensionare dinamicamente gli array? 
man realloc()
e statte accuorto!
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 C'e' un sistema per ridimensionare dinamicamente gli array? 
Dipende...
Per gli array allocati dinamicamente il sistema c'è (realloc()) altrimenti 
no. 
-- 
In silenzio anche un idiota sembra intelligente. Ma non c'è problema,
l'idiota vuol sempre dire la sua.

 
realloc solo se avevi allocato l'array con malloc o con calloc...
se l'array era stato dichiarato tipo:
int myarray[10];
non puoi modificarne la lunghezza. (come potresti invece in Perl e simili)
Costa

Newsgroup: it.comp.lang.c
Titolo: TerminateThread

Ho svariati thread attivi ... uno di questi mi si blocca su una chiamata
sopsensiva ( WritePrinter con la stampante staccata ) dopo vari tentativi di
chiusura soft lo uccido con la TerminateThread e funziona.
Però ( ce sempre un però :) ) tutti gli oggetti allocati ( evnti , zone
critiche ed amenità varie ) mi rimangono aperti , creando dei problemi una
volta che rifaccio ripartire i thread !!!
Qualcuno sa come fare a terminare un thread in modo piu elegante e pulito
!!!
Ciaox
Andrea E.

Qualcuno sa come fare a terminare un thread in modo piu elegante e pulito
Ti stoppo subito : it.comp.programmare.win32
--
Walkie...@Libero.It (ICQ# 8143647)
Newsgroup: it.comp.lang.c
Titolo: finestre con Visual C++

Ciao a tutti,
é la prima volta che scrivo su questo ng, spero di non fare
una domanda OT ( credo che sia cosi' che si dice...).
Sono alla scoperta
del Visual C++. Con ApplWizard ho fatto un progetto usando l'opzione di
creare una finestra di dialogo. Ora ho messo nella finestra un bottone ed
ho creato lo spazio per scrivere il codice relativo al suo click. Ho già
aggiunto con le nuove risorse un'altra finestra di dialogo. Quale codice
devo aggiungere per fare in modo che quando schiaccio il suddetto bottone,
appaia la nuova finestra di dialogo che ho creato?
Grazie a tutti quelli
che leggeranno queste messaggio, ma specialmente a quelli che
rispondereanno...:-)
                          Andrea
--------------------------------
Inviato via 
http://usenet.iol.it

rispondereanno...:-)
Mi spiace darti la brutta notizia, ma sei OT :)
Il gruppo giusto per i problemi di programmazione sotto Win e'
it.comp.programmare.win32
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."

Newsgroup: it.comp.lang.c
Titolo: info......

per avere una vaga idea di come programmare con i protocolli dove mi posso
dicumentare????
grazie per l'iuto.
mario

 ha scritto nel messaggio
news:xJ6z9.13677$XO.5...@news2.tin.it...

se intendi i protocolli di rete devi andare a prendere gli rfc (request for
comments) che ti interessano, ovvero per il/i protocollo/i che vuoi
implementare.
gli rfc li puoi trovare su 
http://www.ietf.org
ciao,
Nids

Newsgroup: it.comp.lang.c
Titolo: C-->CGI

Conoscendo il linguaggio C, è possibile costruire applicazioni cgi o
fac-simili per la gestione di dati passati tramite un form (es.
formattazione dati, costruzione di forum)?
Se sì, come?
Per l'eventuale compilazione si riesce a trovare qualcosa per Win98?
Grazie mille.
Bco°
----------------------------
ICQ: 30331316
E-mail: sbicelli@yahoo****.com
Homepage 32x32Icons: 
http://members.xoom.it/32x32icons/index.htm
----------------------------
Se qualcosa può andar male lo farà.
----------------------------
Bco°
----------------------------
ICQ: 30331316
E-mail: sbicelli@yahoo****.com
Homepage 32x32Icons: 
http://members.xoom.it/32x32icons/index.htm
----------------------------
Se qualcosa può andar male lo farà.
----------------------------

...


]

>
Ora non ricordo l'indirizzo preciso ma cerca cgic, e' una libreria che fa al
caso tuo...
Vi][oZ
-- 
          We are the true believers
       It's our turn to show the world
 In the fire of heavy metal we were burned
         It's more than our religion
          It's the only way to live
           But the enemies of metal
              We can't forgive
Newsgroup: it.comp.lang.c
Titolo: gethostbyname

ciao a tutti,
ho il seguente pezzo di codice (linux):
while (1)
{
	data = gethostbyname(host);
	if (data == NULL)
	{
		switch (h_errno)
		{
			... avviso dell'errore
		}
	}
	else
	{
		... faccio quello che devo
	}
	sleep(nnn);
}
il problema ï¿œ che se capita che il nameserver non risolve e
gethostbyname ritorna NULL, poi la funzione gethostbyname continua
a dare errore anche quando il nameserver continua a funzionare.
Qualcuno ha idea di dove sbaglio?
grazie e ciao
riki

 a dare errore anche quando il nameserver continua a funzionare.
ovviamente intendevo '*riprende* a funzionare.'

 ovviamente intendevo '*riprende* a funzionare.'
Non capisco.
In ogni caso non usare gethostbyname() che è deprecata, ma getaddrinfo
()/getnameinfo().
Magari solo questo risolve la situazione ;)
Ciao!


Problema di cache? Hai provato a guardare quanto tempo di vita ha
l'associazione ip-nome?
-- 
Giacometti Luca alias Samel - "Close the world,txen eht nepo!" - "You
will never break my mind!"
--- news://
freenews.netfront.net/
 - complaints: 
ne...@netfront.net
 ---

 
Ci avevo pensato, ma non ho idea se esiste questa cache per 
l'associazione ip/nome e nel caso esistesse come verificare/impostare il 
tempo di vita.
Tu (o altri) ne sapete qualcosa?
Inoltre imo spiegherebbe l'anomalia
1) risolvo correttamente
2) cade il nameserver
3) risolvo lo stesso
ma non l'inverso (a me succedono entrambe)
1) non risolvo
2) il nameserver riparte
3) continuo a non risolvere
Non ho mai provato ad aspettare più di qualche minuto per verificare se 
dopo un po' di tempo si accorge della situazione mutata.
grazie e ciao
riki
Newsgroup: it.comp.lang.c
Titolo: funzione random

Ho fatto una mia funzione random (non mi ricordo dove l'avevo vista) 
unsigned int rand_value(unsigned int value) {
	srand((unsigned)time(NULL));
	return(unsigned int)((rand() / 65535) % value);
}
il problema è che se richiamo la funzione all'interno di un ciclo mi
restituisce sempre lo stesso numero
Utilizzo compilatore gcc su RH Linux 7.3
grazie
ciao
Lettor, tu vedi ben com'io innalzo, la mia matera, e pero' con piu' arte non ti meravigliar s'io la rincalzo.
					 Dante, Purgatorio, IX, 70-73.

restituisce sempre lo stesso numero
Con (rand() / 65535) % value molto probabilmente ottieni sempre 0.
Considera che rand() ritorna un valore compreso tra 0 e RAND_MAX; lo
standard ANSI prevede che RAND_MAX debba valere almeno 32767, che è
anche il valore massimo per un intero di 16 bit. Spesso succede, e
potrebbe essere il tuo caso, che RAND_MAX valga proprio 32767;
ovviamente, il risultato della divisione intera di tale numero per
65535 è 0, che modulo value dà ancora 0.
Per risolvere, basta fare rand() % value.
-- 
Ciao, Giuseppe

>}
Oltre alle correzioni che ti hanno segnalato, ti faccio notare altre 2 cose:
- la srand andrebbe usata solo una volta o comunque non cosi' di frequente, 
  perche' rischi che il ciclo for venga eseguito piu' di una volta prima che 
  cambi l'output della funzione time, quindi duplichi dei risultati (per 
  cicli brevi e particolarmente sfigati li duplichi tutti), questo in modo 
  indipendente dall'algoritmo di generazione usato.
- sarebbe meglio se usassi questo metodo di generazione (v. FAQ sez 13.16):
  /* genera un numero casuale secondo una distribuzione uniforme, 
   * nell'intervallo [0,1[
   */
  double rnd = (double)rand() / (double)RAND_MAX+1);
  Ora che hai questo valore, puoi generare numero casuali interi in questo 
  modo:
  - /* numero casuale tra 0 e N */
    (int) (rnd * N);
  - /* numero casuale tra a e b, con a < b */
    (int) (rnd * (b-a)) + a;
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."
Newsgroup: it.comp.lang.c
Titolo: cgi e connessione a database in c o c++

Salve a tutti,
vorrei sapere dove posso trovare informazioni utili. Necessito di imparare
come connettermi ad un database MySQL in C o C++ da web.
Devo realizzzare un sito web dinamico in C oppure C++ e Database MySQL.
Grazie a tutti,
Marco
--------------------------------
Inviato via 
http://usenet.libero.it



 Devo realizzzare un sito web dinamico in C oppure C++ e Database MySQL.
   Premettendo che, se non ci sono motivazioni particolarmente forti, 
come la richiesta del cliente, per scegliere questo ambiente di sviluppo 
a scapito di altri piu` adatti sia al web che all'interazione con MySQL 
(due su tutti: PHP e Perl), ti suggerisco di iniziare il tuo 
apprendimento da quanto al seguente URL:
 
http://www.mysql.com/doc/en/C.html
   Buona fortuna! ;)
-- 
Alla prossima,
Marco

grazie ci vado subito:)

--------------------------------
Inviato via 
http://usenet.libero.it
Newsgroup: it.comp.lang.c
Titolo: radix_tree

\*CIAO A TUTTI *\
Salve ho un problema con un radix_tree praticamente
non riesco a fargli produrre i frutti desiderati.
descrizione del
problema:
un radix_tree è un albero binario dove ogni nodo contiene invece
che una chiave una sequenza di bit (010...101)
la posizione dei bit mi da'
anche la posizione della sequenza,  interpretando la stringa di bit da sx a
dx .
il problema è come devo dichiarare la struttura:
typdef struct
radix
(
     ???????????
     struct radix *sx:p, *dx_p;
) radix_tree;
il parametro ????????? è per me tutt'ora sconosciuto.
Ringrazio tutti
per il tempo dedicatomi. 
--------------------------------
Inviato via 
http://usenet.iol.it

 il parametro ????????? è per me tutt'ora sconosciuto.
   Soluzione #1: Usi una struttura con campi di bit [1].
   Soluzione #2: Usi interi senza segno e le operazioni sui bit [2].
[1] Kernighan, Ritchie, "Il linguaggio C (Seconda edizione)", par. 6.9.
[2] Ibidem, par. 2.9.
-- 
Alla prossima,
Marco

Marco
re Mauro.
si in effetti nel
testo [1] che tu consigli, vengono trattati i campi di bit il che puo'
essere per me' di aiuto.
però vorrei approfondire il discorso:
Il
parametro  '?'  deve essere:
un qualcosa di non statico ma dinamico xche'
non è dato sapere a priori la lunghezza del bit.
Poi dovrebbe essere
consultabile come un array, perchè il bit nella posizione i-esima mi da' la
direzione sx(0)  o  dx(1) 
e l'ultimo bit mi dice propio il luogo del ramo
dove alloccare  la mia struttura radix_tree con all'interno il bit (non è
visto come un bit ma come una sequenza di 1, 0 trattabili come array
dinamico) io pensavo alle strutture tipo "LISTE" ma ho paura di perdere
quella che è la natura dell' albero binario perchè
inserendo una sub
struttura la complessita asintottica degli 
algoritmi che andro' ad
implementare crescea'  quasi logaritmicamente in base alla lunghezza della
stringa di bit da inserire.


 stringa di bit da inserire.
   Se non sai a priori quale sara` la lunghezza della stringa di bit che 
utilizzerai, allora ti conviene (modo piu` difficile) implementarla come 
un array di unsigned long (che eventualmente cresce di una quantita` 
nota quando serve) e scriverti una serie di routine che vadano a 
"pescare" i vari bit oppure (modo piu` semplice) come un array di 
caratteri (anch'esso destinato a crescere), posti, per esempio, ad '1' o 
a '0' e gestirti le posizioni singolarmente.
	#ifdef I_HAVE_CHOOSEN_UNSIGNED_LONG
	struct radix {
	#define GROW_FACTOR XXX
	    int           words;
	    unsigned long *bitstr;
	    struct radix  *sx,*dx;
	};
	#else
	struct radix {
	#define GROW_FACTOR XXX
	    int          bits;
	    char         *bitstr;
	    struct radix *sx,*dx;
	};
	#endif
   Pero` ti consiglio, per semplificare le cose, di stabilire a priori 
un limite per la dimensione dell'array ed allocarlo una volta per tutte:
	struct radix {
	#define BITSTR_SIZE XXX
	    unsigned long bitstr[BITSTR_SIZE];
	    struct radix  *sx,dx;
	};
-- 
Alla prossima,
Marco
Newsgroup: it.comp.lang.c
Titolo: OT: Cygnus GNU C++ compiler

 gcc wintest.c -o wintest.exe -Wl,-subsystem,windows
Ma si rifiuta di comipilare e linkare il file.
Preciso che lo stesso file l'ho compilato correttamente con il Symantec C++
e Visual C++.
Probabilmente sto' sbagliando qualcosa nel passaggio dei parametri, ma
l'info a corredo del gcc
è un groviglio di strane impostazioni.
Qualcuno è in grado di dirmi qualcosa???

Scusate, ma ho trovato la soluzione in uno dei messaggi vecchi del NG
Scusate ancora!!!
Newsgroup: it.comp.lang.c
Titolo: tempo in millisecondi

salve,
come posso avere il tempo in campionamenti inferiori al secondo? (la funzione time(0) fornisce un long che e'proprio il tempo in secondi).
grazie,
g.

 wrote in message
960pg6$puq$1...@nread0.inwind.it...


 clock trascorsi dalnizio del proramma. 
peccato che abbia granularita' diverse a seconda delle macchine, e che 
raramente si superino i 12 Hertz...

Newsgroup: it.comp.lang.c
Titolo: Cerco corso online di c/c++

Come da oggetto.
Grazie a tutti.

Come da oggetto.
http://www.cs.cf.ac.uk/Dave/C/CE.html
http://www.eskimo.com/~scs/cclass/krnotes/top.html
-- 
un saluto,
Giuseppe Macario

Newsgroup: it.comp.lang.c
Titolo: sprintf; fprintf

Ciao a tutti!
Non č che qualcuno sarebbe cosě gentile da spiegarmi, in parole povere, cosa
fa sprintf?! In particolare, considerando questa linea di codice:
sprintf(array, argv[1])
dove array č stato dichiarato qualche riga prima:
char array[100];
E fprintf?!
Nel mio "utilissimo" libro c'č scritto che scrive sui file in modo
formattato(e questa č l'unica spiegazione che da...), ma che significa?!
Vi rigrazio.
Marilyn

 Marilyn
Ciao,
 semplicemente la sprintf è come la printf ma invece di visualizzare la
stringa sullo schermo la scrive sull'array di caratteri (array
nell'esempio). Analogamente la fprintf scrive la stringa su un file (che
deve essere già stato aperto).
Nell'esempio che hai tu (sprintf(array, argv[1])) prendi semplicemente la
stringa di parametri passati al programma e la metti nell'array 'array'.
Luca

Newsgroup: it.comp.lang.c
Titolo: Leggere file in una directory

Ciao a tutti,
ad un programma che sto facendo, devo poter leggere dei file che stanno
dentro una directory.
Il nome della directory viene passata nella funzione di lettura, e dentro
questa cartella leggere tutti i file (e sono quelli) che hanno come
estenzione .html  .
Come posso fare?????
Vorrei fare un ciclo che finchè trova file da leggere, li "legga", vede se è
html, se si allora lo esamina (e fa delle operazioni), altrimenti lo
"scarta" e passa a vedere se c'è un altro file.
Non so se sono stato chiaro, scusate forse la domanda scema,ma non sono
riuscito a trovare nessun esempio che faccia questa cosa che mi serve
(ovvero andare in una determinata directory, e leggere sequenzialmente SOLO
i file html che ci stanno).
Grazie!
Andrea

 Andrea
Ciao,
sistema operativo ??

 sistema operativo ??
Giusto... linux!
Grazie, ciao

Io feci cosi' magari ti puo' aiutare:
int dir(SOCKET client) //questa function stampa i file presenti nella 
directory del programma
{
  char c;
  FILE *ifp;
  if((ifp= popen("dir /b", "r"))==NULL)
     printf("ERROR");
   else
     {
      send(client,"\nAvaiable File:\n*",16,0);
     while((c=getc(ifp))!=EOF)
      {
      //putchar(c);
      send(client, &c ,1,0);
      }
     pclose(ifp);
      }
}
Newsgroup: it.comp.lang.c
Titolo: Trovare DJGPP? Un problema!

Scusate ma sto cercando da giorni di scaricare tutti i file di DJGPP, ma non
trovo i seguenti:
gpp281b.zip
gcc281d.zip
djdev201.zip
Ho provato su 
www.deloire.com
 ma niente! Qualcuno sa dove sono finiti?
Grazie.

 djdev202.zip
Se ne trovi di più recenti ti prego di avvisarmi che me le scarico
anch'io.
EMG

you wrote :
#Scusate ma sto cercando da giorni di scaricare tutti i file di DJGPP, ma non
#trovo i seguenti:
#
#gpp281b.zip
#gcc281d.zip
#djdev201.zip
#
#Ho provato su 
www.deloire.com
 ma niente! Qualcuno sa dove sono finiti?
L'indirizzo non e' 
www.deloire.com
 ma 
www.delorie.com/djgpp/
Prova ad utilizzare il servizio ZipPicker
........................................................
.                                                      .
. Andrea Laforgia        (
andrea_...@bigfoot.com
) .
.                                                      .
........................................................
Newsgroup: it.comp.lang.c
Titolo: Mandate tutti i quiz più strani che conoscete sul C

Mi potete fare un favore?
Mi inviate in mail o sul newsgroup tutti gli "strani" quiz che conoscete sul C
Quiz del tipo:
k=5;
j=++k + k++;
quanto vale j ?.........
int v1,v2; float x,y;
v1=5; v2=2
x= v1/v2;
y= v1/(float)v2
quanto vale x-y ?..........
Devo fare un pre-esame di Info2, e il mio prof. ha detto che possiamo proporre
di quiz da inserire nel test...... naturalmente chi più ne propone ha il
vantaggio di conoscerne già le risposte
Aiutatemi se avete tempo.... ;-))
Se volete potete anche mandarmeli in e-mail... ma penso interessino a tutti
ili...@tin.it
--
___________________________________________________
Togliete NOSPAM dall'indirizzo se volete rispondermi...
bye Brain

quanto vale j ?.........
Errore semantico: non viene specificato nulla sull'ordine di
valutazione degli elementi di un'espressione, quindi j ha un valore
che non è possibile definire a priori o che comunque è dipendente dal
compilatore utilizzato.
_____________________________________________________
Francesco Trotta
http://space.tin.it/computer/ftrotta
elimina "x_" dal mio indirizzo per le risposte

 compilatore utilizzato.
E' proprio li' il bello del quiz............ perchè qualsiasi sia l'ordine di
valutazione il risultato è lo stesso:
se il compilatore valuta prima l'op di destra risulta j=7+5;
se il compilatore valuta prima l'op di sinistra risulta j=6+6;
e alla fine naturalmente k è sempre 7.
Se avete diversi compilatori provate.........


e alla fine naturalmente k è sempre 7.
Il fatto è che non è proprio da utilizzare :-)


 e alla fine naturalmente k è sempre 7.
Non e' vero; k e' stato modificato due volte senza l'intervento di
sequence points, ed il risultato e', a norma di standard, INDEFINITO.
Il compilatore e' libero di restituire 7, o di restituire 42, o di
formattarti il disco.
Per maggiori informazioni, consulta le FAQ di comp.lang.c; ad esempio,
al punto 3.2 viene discusso qualcosa di simile:
  int i=7;
  printf("%d\n", i++ * i++);
e confutata l'errata credenza che, indipendentemente dall'ordine di
valutazione, si debba comunque ottenere 56.
Come vedi, il quiz e' bello; ma tu non l'hai superato :-)
-- 
Maurizio Loreti                      
http://wwwcdf.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

 Come vedi, il quiz e' bello; ma tu non l'hai superato :-)
NOOOOOOOO......... me tapino :'-((((((((
Grazie per la risposta


 Dove le trovo le FAQs?
http://www.eskimo.com/~scs/C-faq/top.html
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html

Newsgroup: it.comp.lang.c
Titolo: AIUTO

 qualcuno mi sa dire perchč cazzo non funziona il mio programma?
Comincia con l'utilizzare nomi di variabili piů significativi.
EMG
PS. E astieniti dal fare turpiloquio.

 magari se mi rispondete qui è meglio: 
gan...@tiscalinet.it
mi sa che ti tocca accontentarti di risposte sul ng
-- 
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it
 UIN : 43385135

you wrote :
#qualcuno mi sa dire perchè cazzo non funziona il mio programma?
Ho dato una lettura veloce al tuo codice e mi sembra che utilizzi lo
specificatore di formato %d per la lettura di un tipo float : e'
sbagliato, dovresti utilizzare %f.
--------------------------------------------------------
* Andrea Laforgia        (
andrea_...@bigfoot.com
) *
--------------------------------------------------------

Giusto perche' il mio nome proprio e' raro, ma vedo che non proprio cosi'
raro, vorrei precisare che l'Igor che chiede "perche' (beep) non funziona il
suo..." non e' quello che ha chiesto su un altro NG aiuto per arte
programmazione, cioe' non sono io.
Mi sembrava doveroso puntualizzarlo, soprattutto per Alessandro Monti e gli
altri che mi hanno gentilmente risposto. Mi darebbe fastidio che mi
boicottassero perche'  ritenuto maleducato, quando invece non lo sono.
Scusate l'OT ma ci tengo ai buoni rapporti in rete.

 boicottassero perche'  ritenuto maleducato, quando invece non lo sono.
Per me non ci sono problemi, decido se e come rispondere in base alla
lettera, non in base alla firma.
Questo perchè sono smemorato. he he he
--
Alessandro Monti
Newsgroup: it.comp.lang.c
Titolo: main () o int main() ?

Salve, 
sono sempre stato abituato a scrivere dopo #include <libreria.h> il
comando d'apertura programma int main(), ora però scopro che basta
solo scrivere main() senza l'int; come mai?
grazie.

 ha scritto nel messaggio
news:ncrq1vk689neduca9...@4ax.com...

io sono un principiante me penso che sia per il semplice fatto che il main()
è una funzione e quindi deve ritornare qualche valore.
Con int main() presumo che il compilatore si aspetti che la funzione ritorni
un intero ed è per questo che ci vuole un "return 0" alla fine (altrimenti
ti becchi un bel warning). Io di solito apro il programma con un "void
main()" quindi il compilatore non si aspetta che la funzione ritorni alcun
valore (non mi da il warning se non metto return 0).
Se ho detto una cazzata siete pregati di correggermi (educatamente per
favore).
Ciao.
Cendo

Bottle Man wrote:

Lo standard dice che le forme accettabili per la funzione main sono
- int main(void);
- int main(int argc, char* argv[]) o forme equivalenti;
Molti compilatori sono "di bocca buona" e accettano anche altre forme, tipo
- void main(void);
- int main(int argc, char* argv[], char** envp) o equivalenti;
- varianti delle due forme precedenti.
Questo non toglie che siano modi scorretti di dichiarare la funzione main:
nessuno ti assicura che una forma diversa dalle prime due sia accettata
da compilatori diversi da quello che usi attualmente.
HTH
C:\>iao Angelo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 solo scrivere main() senza l'int; come mai?
l'int in quel caso è implicito.

 wrote in message
news:ncrq1vk689neduca9...@4ax.com...

Perchè non scrive int o scriverlo è la stessa cosa...nel senso che se non
metti nulla si aspetta un int.


Si... in C89 (vecchia specifica) è permesso ma *non* in C99 (nuova
specifica)...
Saluti
R.I.

 - int main(int argc, char* argv[]) 
che significa? non l'ho mai capito
grazie facc'ebburriccu
-- 
 ------------------------------------------------------------------------
| Powered by *Debian GNU/Linux 3.0* 	   Linux Registered User #297089 |
| <<UNIX is user friendly, it's just picky about who its friends are>>   |
 ------------------------------------------------------------------------

 ha scritto nel messaggio
news:slrnb2ekcn.ec.facc'ebur...@athlon.filuferru.net...

Newsgroup: it.comp.lang.c
Titolo: input output dei caratteri

ciao
input output dei caratteri...
sul mio libro c'e' un piccolo programma
salto le prime righe....
int c;                     /*crea la variabile (perche' non char???)*/
c=getchar();         /*si prepara ad accettare un carattere*/
while(c !=EOF)   /*controlla se e' presente o meno end of file*/
putchar(c);         /*scrive il carattere battuto*/
c=getchar();        /*nuovamente in attesa*/
che puo' essere riscritto anche cosi'
int c;
while((c=getchar())!=EOF)
putchar(c);
ora le domande sono:
se provo a fare getchar !=EOF ottengo sempre 1 perche'?
come faccio a stampare il valore di EOF?
vi ringrazio buon lavoro!

 vi ringrazio buon lavoro!
a chi lo dici!
sono appena al capitolo numero 2 :-)

 come faccio a stampare il valore di EOF?
printf("%d\n", EOF);
Suppongo  che verra`  -1 (il  valore  e` implementation  defined, ma  e`
garantito  che sia  negativo). Il  set di  caratteri  della macchina  e`
composto solo da  numeri positivi, quindi niente collisione  (a patto di
usare un int).
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
"La Via prosegue senza fine."
	Bilbo Baggins - Il Signore degli Anelli - J.R.R. Tolkien

Newsgroup: it.comp.lang.c
Titolo: Libreria

Sto creando la mia prima libreria in C (che soddisfazione!).
A tal proposito mi servirebbero chiarimenti, forse banali per i più esperti,
ma non per me. 
1) cosa devo inserire nell'header file della libreria? Bastano le
intestazioni di tutte le funzioni, le strutture, e quant'altro di
"globale", o devo inserire qualcos'altro?
2)la mia libreria fa uso di altre librerie esterne. Chi utilizzerà la mia
libreria dovrà avere installate sul suo sistema tali librerie (scusate la
ripetizione) ? Oppure, essendo compilata, queste faranno automaticamente
parte del modulo oggetto?
... probabilmente seguiranno altre domande
Grazie
        Fabbro

 parte del modulo oggetto?
No.
--
Cingar
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/
Newsgroup: it.comp.lang.c
Titolo: help C

Salve dovrei preparare un programma che data una grammatica analizzi il
linguaggio dato. C'è qualcuno che puo darmi una mano? Grazie
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 linguaggio dato. C'è qualcuno che puo darmi una mano? Grazie
? cioe' ?
Data una grammatica deve scomporre una frase negli elementi di cui e'
composta? [soggetto, verbo, etc..]
Come e' composta questa grammatica?
Spiegati meglio.
Ciao,
Riccardo
-- 
-=Riccardo Galli=-
 _,e.
s~  ``
 ~@.   ideralis Programs
.   ol 
 `**~  
http://www.sideralis.net

 Riccardo
-- 


 Ciao
Potresti fare un esempio su cosa vorresti ottenere?
C:\>iao Angelo


Ciao tempo fa ho fatto qualcosa del genere per un ragazzo universitario che
aveva forti problemi...
E' in grado di riconoscere la sintassi del C ma si può adattare anche per
C++, riconosce le direttive, le parole riservate, se si tratta di
dichiarazioni o di prototipi, reperisce l'intestazione delle funzioni, tutto
il corpo ed è in grado di contare le parentesi graffe e tonde ed indicarti
se ce una mancanza...
Fammi sapere
--------------------------------
Inviato via 
http://usenet.libero.it

 wrote in message
news:8a95857c75c947072d6...@mygate.mailgate.org


 wrote in message
news:62Z211Z222Z231Y...@usenet.libero.it



 wrote in message
news:9cd3a4ae55f7fdcd161...@mygate.mailgate.org...


Se vuoi te lo invio...


 bye
Stavo pensando alla stessa soluzione. Purtroppo non e' che sia
il massimo della semplicita'.


 Inviato via 
http://usenet.libero.it

Newsgroup: it.comp.lang.c
Titolo: Matrice di pipes - System calls linux

Ho provando a fare questo esercizio:
 
Si progetti in ambiente Unix/C la seguente interazione di processi:
- il sistema consiste di N+1 processi che interagiscono a due a due
tramite una delle N pipe disponibili: la pipe p_i � utilizzata in lettura
dal processo P_i e in scrittura dal processo P_i-1 ;
- il processo P_0 inoltra il proprio pid nella pipe e attende l'arrivo di un
segnale;
- ogni processo P_i (con i<N) preleva il messaggio dalla pipe p_i e lo
scrive nella pipe p_i+1 ;
- il processo P_N, ricevuto il pid di P_0, provvede ad inviargli un
segnale SIGUSR1.
 
 
 
Consigli del docente del corso:
1)Abbiamo un processo padre e N suoi processi figli
2)La struttura dati che deve contenere le pipe deve essere una matrice 
di N righe e due colonne.
 
 
 
Questo il mio tentativo:
 
 
 
 
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <signal.h>
#define N 10
 
 
void Gestione(int s){
printf("Segnale ricevuto\n");
}
 
 
int main()
{
int i,pid,ptoken;
int matfd[N][2];
for(i=0;i<N;i++)
pipe(matfd[i]); //creo le N pipe su cui far passare il pid del padre
 
for(i=0;i<N;i++){
pid=fork();
if(pid==-1) {perror("Errore fork\n"); _exit(1);}
if (pid==0) {
printf("Processo P%d\t",i+1); close(matfd[i][1]); close(matfd[i+1][0]); 
//chiudo i "lati" delle pipe su cui non devo leggere/scrivere
read(matfd[i][0],&ptoken,sizeof(int)); printf("Ptoken: %d\n",ptoken);
if (i==(N-1)) {kill(ptoken,SIGUSR1); _exit(0);} //ossia sono l'ultimo 
processo figlio  e mando il segnale al padre
else {write(matfd[i+1][1],&ptoken,sizeof(int)); _exit (0);}
}
}
 
ptoken=getpid();
printf("Pid padre(P0): %d",ptoken);
signal(SIGUSR1,Gestione);
close (matfd[0][0]); write(matfd[0][1],&ptoken,sizeof(int));
 
pause();
return 0;
 
 
}
 
 
Pare funzioni, ma siccome ho l'esame tra breve, vorrei un vostro parere 
e qualche consiglio.
 
Forse come codice � un pochino troppo "sporco" credo...
 
Ci sarebbe un' alternativa usando exec: separando il codice del padre da 
quello del generico figlio, e passando la "i" del for come stringa alla 
exec, per poi riconvertirla in numero nel figlio usando una cosa come: 
int i; sscanf(argv[1],"%d",&i), cosi' potrei  gestire le pipe "i" e 
"i+1" del generico figlio,  ma non ci ho neanche provato, temo 
impazzirei!!! :-)

 [...]
 
 
Ciao  Manlio

 programma che deve gestire molti files.
 
e' cosa buona e giusta liberare le risorse non piu' utilizate.
 
Ciao Jack
-- 
Yoda of Borg am I! Assimilated shall you be! Futile resistance is, hmm?

 Perchè mai dovresti fare una cosa del genere?
 
Come diceva il prof al corso: per mantenere "maggior pulizia"
 
Grazie per i commenti.

 [...]
 
 
Ciao  Manlio