Pages: 1 2 3 [4]   Go Down
Print
Author Topic: problema esecuzione programmi c linux  (Read 16909 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Pandemia000
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.714


Γνῶθι Σεαυτόν


« Reply #45 on: 15-02-2009, 23:09:52 »

tornando al mio problema ho trovato la soluzione. Il dubbio è sorto quando i programmi si bloccavano nonostante il codice fosse corretto. Così ho compilato il codice del prof e lo stesso problema si ripresentava. Così ho subito pensato alle nuove librerie di linux e cercando in rete, al sito http://www.docmirror.net/it/linux/howto/misc/GCC-HOWTO/GCC-HOWTO-4.html ho trovato:

Quote
Problema

I sistemi POSIX controllano la presenza di segnali più frequentemente rispetto a sistemi UNIX più vecchi. Linux può eseguire dei gestori di segnali:

    * in modo asincrono (tramite un timer)
    * al ritorno da ogni chiamata di sistema
    * durante l'esecuzione delle seguenti chiamate di sistema: select(), pause(), connect(), accept(), read() su terminali, su socket, su pipe o su file in /proc, write() su terminali, su socket, su pipe o sulla line printer; open() su FIFO, su PTY o su linee seriali, ioctl() su terminali; fcntl() con il comando F_SETLKW; wait4(), syslog(), ogni operazione TCP o NFS.

Per altri sistemi operativi potrebbe essere necessario includere in questa lista le chiamate di sistema creat(), close(), getmsg(), putmsg(), msgrcv(), msgsnd(), recv(), send(), wait(), waitpid(), wait3(), tcdrain(), sigpause(), semop().

Se un segnale (per il quale il programma ha installato un gestore) avviene durante una chiamata di sistema, viene chiamato il gestore. Quando il gestore restituisce il controllo (alla chiamata di sistema), essa rileva che è stata interrotta e restituisce immediatamente -1 e errno = EINTR. Il programma non si aspetta che questo accada, pertanto si blocca.

inoltre lo stesso problema si presenta quando si passa alla chiamata gethostbyname una stringa (ad esempio se passate "120.0.0.1") mentre funziona se assegnate ad un char[] il valore e lo passate alla chiamata.L'unica cosa che non ho capito è come risolvere il problema. Il sito dice:
Quote
int result;
while (len > 0) {
        result = read(fd,buffer,len);
        if (result < 0) { if (errno != EINTR) break; }
        else { buffer += result; len -= result; }
}

ma da dove importo EINTR ? e errno ?
Logged

La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta. (Isaac Asimov)
winnie86
Apprendista Forumista
**
Offline Offline

Posts: 119



« Reply #46 on: 18-02-2009, 19:07:47 »

Ciao a tutti...volevo un'informazione...come faccio a testare se funzionano il client e server locali scritti dal prof (unclnt e unsrvr)??...che comandi devo lanciare dopo avreli correttamente compilati???
Inoltre...qualcuno sa dirmi perchè quando provo a compilare programmi con i thread mi da questo errore:

/tmp/cc8F6PQm.o: In function `main':
hello.c:(.text+0x3e): undefined reference to `pthread_create'
hello.c:(.text+0x61): undefined reference to `pthread_create'
collect2: ld returned 1 exit status

Grazie!!!
Logged
johnnybravo
Guest
« Reply #47 on: 19-02-2009, 10:03:56 »

Ciao a tutti...volevo un'informazione...come faccio a testare se funzionano il client e server locali scritti dal prof (unclnt e unsrvr)??...che comandi devo lanciare dopo avreli correttamente compilati???
Inoltre...qualcuno sa dirmi perchè quando provo a compilare programmi con i thread mi da questo errore:

/tmp/cc8F6PQm.o: In function `main':
hello.c:(.text+0x3e): undefined reference to `pthread_create'
hello.c:(.text+0x61): undefined reference to `pthread_create'
collect2: ld returned 1 exit status

Grazie!!!


Devi compilare in questo modo:

gcc <file.c> -o <nome_eseguibile> -lpthread

poi lanci con .\<nome_eseguibile>
« Last Edit: 19-02-2009, 10:06:11 by johnnybravo » Logged
winnie86
Apprendista Forumista
**
Offline Offline

Posts: 119



« Reply #48 on: 19-02-2009, 11:13:30 »

Si...infatti avevo già risolto!!!
Logged
bluegirl
Apprendista Forumista
**
Offline Offline

Posts: 360



« Reply #49 on: 19-06-2009, 09:55:15 »

si ma queste sono chiamate di sistema specifiche per unix e non esistono in windows che ha le sue.

quoto

Se non vuoi perdere tempo ad installare linux io uso la virtual machine che ci diede il prof Riccobene per Web Programming e funziona benissimo Smiley


Ma con ubuntu dovrebbe funzionare no?

Ciao...potresti dirmi per favore qual è la virtual machine data da Riccobene?Perchè su Windows non riesco a compilare nessun programma, neanche gli esempi del Prof. E sto usando Dev C++.
Vediamo se riesco a risolvere con questo che suggerisci.
Logged
Pandemia000
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.714


Γνῶθι Σεαυτόν


« Reply #50 on: 19-06-2009, 10:12:57 »

va bene una qualsiasi distro. Prova con l'ultima di ubuntu, dovrebbe già installarti tutto il necessario per compilare gli esempi del prof.
Logged

La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta. (Isaac Asimov)
bluegirl
Apprendista Forumista
**
Offline Offline

Posts: 360



« Reply #51 on: 19-06-2009, 10:30:28 »

va bene una qualsiasi distro. Prova con l'ultima di ubuntu, dovrebbe già installarti tutto il necessario per compilare gli esempi del prof.

Ho Windows, non Linux
Per questo infatti uso Dev C++, ma non funge.
Logged
Pandemia000
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.714


Γνῶθι Σεαυτόν


« Reply #52 on: 19-06-2009, 12:59:41 »

su windows non ti funzioneranno mai perchè i programmi usano le librerie gnu/linux e non win32. Se ti scoccia fare una installazione nativa puoi sempre installare linux su macchina virtuale, ma la presenza di un sistema linux è assolutamente obbligatoria.
Logged

La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta. (Isaac Asimov)
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #53 on: 19-06-2009, 13:05:34 »

ma da dove importo EINTR ? e errno ?
Ricordo che una volta ho fatto man errno e mi è spuntato il file in cui è presente errno.
Forse è proprio errno.h  boh.


va bene una qualsiasi distro. Prova con l'ultima di ubuntu, dovrebbe già installarti tutto il necessario per compilare gli esempi del prof.
Ho Windows, non Linux
Per questo infatti uso Dev C++, ma non funge.
Puoi installare cygwin .
 
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
bluegirl
Apprendista Forumista
**
Offline Offline

Posts: 360



« Reply #54 on: 19-06-2009, 14:35:09 »

su windows non ti funzioneranno mai perchè i programmi usano le librerie gnu/linux e non win32. Se ti scoccia fare una installazione nativa puoi sempre installare linux su macchina virtuale, ma la presenza di un sistema linux è assolutamente obbligatoria.

Ah ecco , Grazie mille...ma qual era questa virtual machine che consigliava Riccobene?
Logged
Pandemia000
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.714


Γνῶθι Σεαυτόν


« Reply #55 on: 19-06-2009, 15:18:16 »

un virutalizzatore gratuito è Sun Virtual Box ed è pure facile da usare. Con questo puoi virtualizzare praticamente tutti i sistemi operativi x86 (e x64  se supportato dal tuo processore).
Logged

La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta. (Isaac Asimov)
bluegirl
Apprendista Forumista
**
Offline Offline

Posts: 360



« Reply #56 on: 19-06-2009, 17:54:22 »

un virutalizzatore gratuito è Sun Virtual Box ed è pure facile da usare. Con questo puoi virtualizzare praticamente tutti i sistemi operativi x86 (e x64  se supportato dal tuo processore).

Ok grazie mille, provo subito
Logged
Pandemia000
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.714


Γνῶθι Σεαυτόν


« Reply #57 on: 19-06-2009, 18:09:24 »

ok fammi sapere  ciao
Logged

La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta. (Isaac Asimov)
salvin
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 259



« Reply #58 on: 14-07-2009, 01:00:23 »

Pandemia000, non ti funziona semplicemente perché hai scritto:
Code:
int main(char * argv[])
al posto di:
Code:
int main(int argc, char * argv[])

...
Logged
Pages: 1 2 3 [4]   Go Up
Print
Jump to: