|
|
|
![]() |
|
Strumenti |
![]() |
#21 | |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
Quote:
__________________
|
|
![]() |
![]() |
![]() |
#22 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
qui ci sono le platform SDK, dovrebbe contenere tutto l'occorrente
http://msdn.microsoft.com/vstudio/ex...alc/usingpsdk/ per fare il linking in visual studio vai in Progetto->proprietà progetto, scegli linker e in input aggiungi wininet.lib alla voce dipendenze aggiuntive
__________________
|
![]() |
![]() |
![]() |
#23 |
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Più semplicemente, usa wget come tool esternamente, richiamandola con una classica system call "execve" di C, o se voi fare ancora più il figo, fai una fork() (o un thread in windows) e nel processo/thread risultante fai la execve: in questo modo scarichi la pagina internet SENZA che il tuo programma attenda la terminazione di wget, quindi il processo prinicpale continua a fare altro.
Se poi vuoi proprio usare i socket o librerie non portabili di windows, sarai accontentato ![]() ![]() EDIT: se vuoi usare socket o librerie di più altro livello, ti conviene leggrti un po' i meccanismi client-server, cosa sono i socket, ecc., sennò rischi di copiare "bovinamente" del codice senza capirci nulla, e questo per un programmatore è da evitare.
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson Ultima modifica di -fidel- : 11-09-2006 alle 11:48. |
![]() |
![]() |
![]() |
#24 | |
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
non è portabile... meglio una classica execXXX, che lancia prima firefox, in mancanza di questo prova Opera, poi IE (il tutto per garantire portabilità). Ma comunque vedo che non era questo il suo obiettivo...
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson |
|
![]() |
![]() |
![]() |
#25 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#26 | |
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
Stesso discorso per WinINet: preferisco i socket bsd (implementati in Windows con pochissime differenze), o e vuoi maggiore "trasparenza" ci sono in giro diverse librerie che "nascondono" i socket, che presentano i relativi wrapper di compatibilità con altre piattaforme. A mio parere è buona prassi, tutto qui ![]() NB: non sono riuscito ancora a capire cosa si intende con LOL! ![]()
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson |
|
![]() |
![]() |
![]() |
#27 |
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
fidel fammi capire un attimo. ho cercato un po in rete ke é wget....ed é programma x scaricare (non ho ancora trovato il tempo x scaricarlo), quindi in pratica apro il programma wget? (system("wget.exe")?) in questo modo significa ke wget dovrebbe aprirsi e poi automaticamente scaricare un pag web e salvarla,xo poi nn si kiuderebbe da solo; ho guardato un po per la funzione fork(): a quanto ho capito consente d avviare due processi in simultanea juso? ho provato sto semplice codice:
#include <sys/types.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> int main(void) { fork(); //duplicazione del processo printf("Sono il padre\n"); printf("sono il figlio\n"); return EXIT_SUCCESS; } xo mi da errore: mi dice ke fork non é dikiarata!!! come mai? |
![]() |
![]() |
![]() |
#28 | |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
Quote:
__________________
|
|
![]() |
![]() |
![]() |
#29 | ||
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Esempio: system("wget http://www.google.com -O google.html"); Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
![]() |
![]() |
![]() |
#30 |
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
@$te:
Il post #29 di andbin spiega bene la situazione: per wget quindi ci sei. Per qanto riguarda la fork(): come già detto è un concetto Unix/Linux: su windows sono supportati solo i thread (quindi no duplicazione immediata - tramite system call per intenderci - dei processi). Nessuno ti vieta di lanciare la system(), anzi, ti dirò di più. Prima ho parlato di execve:se lanci quella, il tuo processo viene sostituito dal processo specificato come parametro, quindi alla fine del comando passato alla execve, il tutto termina (non c'è ritorno...). Quindi sei costretto a lanciare un nuovo processo (o un nuovo thread parlando di Windows) il quale lanci a sua volta la execve. Per semplificare la vita a tutti ( ![]() Tutto questo è per spiegare il meccanismo: comunque usa system() come detto da andbin nel post precedente e sei a posto. Per concludere, ricorda: Windows NON supporta la system call fork(), semplicemente perchè non supporta (per scelta progettuale) la duplicazione di un processo. Windows usa i thread (che puoi pensarlo come una "costola" del programma che gira autonomamente (in modo concorrente) all'interno del processo stesso).
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson Ultima modifica di -fidel- : 11-09-2006 alle 16:00. |
![]() |
![]() |
![]() |
#31 |
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
incredibile windows....mi sa ke prossimamente iniziero ad usare linux sul pc vekkio:P cmq, se ad esempio faccio un programmino ke usa fork con linux, e poi lo compilo, poi se lo provo con windows dovrebbe andare cmq justo? ora provo come ha detto andbin!!
|
![]() |
![]() |
![]() |
#32 | |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
Quote:
__________________
|
|
![]() |
![]() |
![]() |
#33 | |
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
Per creare un eseguibile per Windows, devi compilare il sorgente su Windows (con un compilatore/linker per windows), stessa cosa per linux. I programmi cosiddetti "portabili" sono proprio quelli che compilano su diverse piattaforme indifferentemente, perchè usano chiamate standard e/o librerie che esistono su diversi SO. Un esempio: se vuoi usare i thread sia su Win che su Linux (quindi creare un programma che usi i thread e che compili su entrambi i SO), puoi usare la libreria pthread: http://sourceware.org/pthreads-win32/ che come vedi esiste anche per Windows (in linux è presente di default, perchè pthread usa lo standard internazionale POSIX per il multithread, cosa che come al solito con le librerie MS non accade). Tutto questo è un esempio se sei interessato alla portabilità delle tue applicazioni. Ovviamente se usi le librerie fornite da MS, i tuoi programmi compileranno e gireranno solo su Windows (o su linux con Wine, se va tutto bene), ma non sempre, del resto, è richiesta la portabilità ![]() Cmq la system() è una chiamata che puoi usare sia con Win che con Linux, quindi vai tranquillo (e non hai neanche bisogno di "forkare" il processo manualmente - o creare un nuovo thread - fa tutto la system() in automatico, come ho spiegato in un post precedente).
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson Ultima modifica di -fidel- : 12-09-2006 alle 11:15. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:26.