Pagina 1 di 1
qualche domanda su un progr in c....
![Messaggio Messaggio](./styles/green2_3_0_0/imageset/icon_post_target.gif)
Inviato:
11 gen 2010, 02:44
di buz87
ciao a tutti, vorrei farvi qualche domanda....
sto facendo un server concorrente, dove ogni figlio, quando generato, offre alcuni servizi ad un client. i figli devono leggere da un file di testo e la fopen è chiamata a fork avvenuta, quindi "dentro" ai figli, volevo sapere visto che i file descriptor creati saranno diversi e il file è aperto solo in lettura, non dovrebbe dare problemi l'accesso contemporaneo al file da parte di più processi vero?(il file da cui devono leggere i figli è unico per tutti...)
seconda domanda: sto server deve girare anche su un sistema solaris e volevo sapere se devo fare attenzione a qualcosa in particolare...il protocollo con cui comunica il server col client è testuale (quindi il fatto che sia little endian non influisce) basato sul carattere '\r' come terminatore di riga, quando apro un file su solaris [ fopen(file, "r") ] me lo riconosce esattamente come su linux o i caratteri vengono letti diversamente e quindi magari devo aprirlo in binario? perchè so di un problema riscontrato dove non venivano trovati i caratteri '\r' ......
grazie per l'aiuto!!!
Re: qualche domanda su un progr in c....
![Messaggio Messaggio](./styles/green2_3_0_0/imageset/icon_post_target.gif)
Inviato:
11 gen 2010, 17:11
di buz87
altra domanda...
creo una matrice int matrix[65535][10], poi devo riempire tale matrice con una funzione riempimatrice e quindi chiamo riempimatrice(..., matrix, );
il prototipo è: int riempimatrice(..., int **matrix, ...)
però mi da errore tipo incompatibile... come faccio a passare alla funzione l'indirizzo della matrice????
Re: qualche domanda su un progr in c....
![Messaggio Messaggio](./styles/green2_3_0_0/imageset/icon_post_target.gif)
Inviato:
12 gen 2010, 19:17
di thrantir
per il file nessun problema, piu' processi possono aprire lo stesso file in lettura, il contenuto del file immagino non cambi mai durante l'esecuzione
per il discorso della matrice ti rispondo poi, che ora devo scappare, intanto ti dico che int[][] e int** non sono la stessa cosa
Re: qualche domanda su un progr in c....
![Messaggio Messaggio](./styles/green2_3_0_0/imageset/icon_post_target.gif)
Inviato:
13 gen 2010, 01:02
di buz87
alla fine ho deciso che non faccio più leggere da file, quando il server si avvia carico tutto in un database...
e per la matrice ho risolo creandomi un vettore di puntatori che poi popolo dinamicamente.. però se puoi darmi una spiegazione sul perchè definito int matrix[][] allora non vale la relazione matrix = int** te ne sarei grato, ne ero quasi certo...
anche perchè int[] = int* .....
e per come la so io quando si dichiara matrix[a][b] vengono allocate 'a' porzioni di memoria contigue, suddivise in 'b' "pezzetti", quindi in matrix[a] dovrebbe esserci l'indirizzo della prima cella del blocco a, quindi matrix è un puntatore a puntatore.....bha aspetto che spieghi e smetto di farmi tutte ste seghe mentali....
![Brick wall ](*,)](./images/smilies/eusa_wall.gif)
Re: qualche domanda su un progr in c....
![Messaggio Messaggio](./styles/green2_3_0_0/imageset/icon_post_target.gif)
Inviato:
13 gen 2010, 02:04
di buz87
ora sto cercando un modo per mettere un timer ad alcune funzioni, mi spiego:
ho una funzione function() richiamata nel main, voglio che tale funzione non duri più di x secondi e a seconda del valore di ritorno devo capire se essa è terminata a causa del timer o perchè è terminata e basta.
avevo pensato una cosa del genere:
- Codice: Seleziona tutto
function(...........){
alarm(x);
:
:
return m;
}
di default il segnale SIGALRM termina l'applicazione invocante,qui la mia damanda: è possibile creare un handler che fa terminare solo la function() e la faccia terminare con un valore a mia scelta?(mi basta che termini con un valore minore di zero....)
Re: qualche domanda su un progr in c....
![Messaggio Messaggio](./styles/green2_3_0_0/imageset/icon_post_target.gif)
Inviato:
14 gen 2010, 14:11
di thrantir
buz87 ha scritto:e per la matrice ho risolo creandomi un vettore di puntatori che poi popolo dinamicamente.. però se puoi darmi una spiegazione sul perchè definito int matrix[][] allora non vale la relazione matrix = int** te ne sarei grato, ne ero quasi certo...
anche perchè int[] = int* .....
e per come la so io quando si dichiara matrix[a][b] vengono allocate 'a' porzioni di memoria contigue, suddivise in 'b' "pezzetti", quindi in matrix[a] dovrebbe esserci l'indirizzo della prima cella del blocco a, quindi matrix è un puntatore a puntatore.....bha aspetto che spieghi e smetto di farmi tutte ste seghe mentali....
![Brick wall ](*,)](./images/smilies/eusa_wall.gif)
e' vero che la matrice
int my_matrix[a][b]
e' istanziata come a vettori di b elementi contigui, e proprio per questo non equivale a un int**! infatti, int** significa avere un puntatore che punta ad una cella che a sua volta e' un puntatore a intero, e' una cosa totalmente diversa!
my_matrix in memoria e' una cosa del tipo
my_matrix -> |_|_|....|_|
mentre int** my_ptr_to_ptr e'
my_ptr_ptr -> |_| -> |_|
non so se e' chiaro il simbolismo grafico
puoi trattare una matrice come un array di dimensione a * b, e, se hai int* my_head = my_matrix, sai che
my_matrix[i][j] = my_head + b*i + j
Re: qualche domanda su un progr in c....
![Messaggio Messaggio](./styles/green2_3_0_0/imageset/icon_post_target.gif)
Inviato:
14 gen 2010, 16:04
di thrantir
per il discorso del timer, ma tu uvoi che dopo esattamente x secondi la funzione termini comunque? considera che se stai eseguendo una chiamata bloccante, non puoi uscire a meno di azioni drastiche. Sicuramente devi controllare il tempo trascorso dopo ogni chiamata... puoi specificare meglio cosa vuoi realizzare?
Re: qualche domanda su un progr in c....
![Messaggio Messaggio](./styles/green2_3_0_0/imageset/icon_post_target.gif)
Inviato:
14 gen 2010, 18:34
di buz87
per il discorso sulla matrice in effetti hai ragione... non so perchè mi ero convinto che con matrix[a+2] si indicasse un puntatore alla serie di b celle partenti dall'indirizzo matrix+2*(a+2)..... capito grazie......
per il timer ho risolto usando alarm() e nell'handler dell'alarm modifico una variabile che testo nella funzione, quando questa cambia termino la funzione......
Re: qualche domanda su un progr in c....
![Messaggio Messaggio](./styles/green2_3_0_0/imageset/icon_post_target.gif)
Inviato:
14 gen 2010, 21:36
di thrantir
ok
l'unico problema e' appunto se fai delle chiamate bloccanti, tipo recv o read
Re: qualche domanda su un progr in c....
![Messaggio Messaggio](./styles/green2_3_0_0/imageset/icon_post_target.gif)
Inviato:
19 gen 2010, 18:12
di buz87
infatti per mettere un timer alla read uso la select().......
Re: qualche domanda su un progr in c....
![Messaggio Messaggio](./styles/green2_3_0_0/imageset/icon_post_target.gif)
Inviato:
20 gen 2010, 09:44
di thrantir
ok
su quale piattaforma sviluppi? sotto linux le recenti release delle libc ti consentono di rendere non bloccanti alcune chiamate, come read e recv, dai un'occhiata ai man
Re: qualche domanda su un progr in c....
![Messaggio Messaggio](./styles/green2_3_0_0/imageset/icon_post_target.gif)
Inviato:
01 feb 2010, 19:55
di buz87
ok grazie 1000!!!!