Newsgroup: it.comp.programmare.win32
Titolo: aiuto! Richiamo programmi

Salve a tutti,
volevo chiedere se qualcuno poteva indicarmi come e' possibile
richiamare un applicazione all'interno di un programma scritto in C o C++
In particolare se devo richiamare ad esempio il programma netstat.exe con
alcuni parametri come faccio, e come faccio ad utilizzare i risultati del
programma netstat all'interno del mio programma?
grazie anticipatamente e scusatemi, se è una domanda banale almeno
indicatemi una faq o un howto.
grazie!

 
"Nessuna domanda e` banale", almeno sinche` tocca gli argomenti
tecnici di questo gruppo (e la tua c'e` in pieno, se per qualche ragione
non puoi usare popen...).
Alex

o C++
La funzione 'ShellExecute' dovrebbe fare al caso tuo.
Il Ghenio

 wrote in message 80hfbk$s35$1...@nslave1.tin.it...

Noto che ho risposto solo su it.comp.programmare.win32 (apparentement
la reply del dannato Outlook che uso al lavoro non gestisce i cross-post).
Comunque, per ripetere -- la soluzione piu` semplice e` popen (che
puo` essere chiamata _popen da compilatori aderenti allo standard ISO).
Alex

 puo` essere chiamata _popen da compilatori aderenti allo standard ISO).
Secondo il mio DJGPP, popen() non è standard (e _popen() non esiste
proprio). Chi sbaglia?
EMG

 
Nessuno.  popen appartiene allo standard Posix, ma non ad altri
standard (ad esempio, non allo standard ISO per il linguaggio C);
in effetti, non puo` essere implementata su ambienti di potenza non
sufficiente (in particolari, ambienti che non dispongano delle "pipe",
costrutto presente in Unix, Win32, VMS, e certamente anche in
altri ambienti 32-bit, ma non nell'antichissimo DOS a 16 bit).
Lo standard ISO per il linguaggio C e` molto specifico nel proibire
la definizione, da parte di certi header standard (come stdio.h), di
identificatori al di fuori di una certa lista ben precisa, che _non_
comprende un mucchio di funzioni Unix (previste dallo standard
Posix) come read, write, popen, eccetera.  Quindi abbiamo un
conflitto di due standard: lo standard ISO per il linguaggio C vieta
a stdio.h di definire popen, lo standard Posix (pure accettato da
ISO -- altro comitato, stessa organizzazione-ombrello) glie lo
comanda.  Una via d'uscita puo` venire trovata nel fatto che lo
standard ISO per il C considera tutti gli identificatori di certe
classi lessicali come "proprieta` dell'implementazione", e quindi
possono essere esportati da qualsiasi header nonostante le
proibizioni suddette.  Identificatori come _popen (carattere di
sottolineatura iniziale) rientrano fra quelli "implementation-defined".
E` dunque comune, per un compilatore che aderisca (o almeno
cerchi di avvicinarsi) a entrambi gli standard, l'esportazione di
identificatori come "_popen", "_read", "_write", eccetera.
Se il tuo compilatore genera programmi per DOS, o altri sistemi
operativi antichi che non abbiano i "pipe", fa certamente bene
a non definire "popen" (in nessuna forma).  Su Win32, come su
Unix ecc ecc, i pipe ci sono, quindi un compilatore per questi
ambienti fa altrettanto bene a definire popen (magari come _popen).
Se per caso scegli di usare un compilatore che non supporta
tutte le feature del tuo ambiente (almeno quelle standard di fatto,
come i pipe), naturalmente, "chi sbaglia" sei tu:-).  Sempre che
queste feature ti interessino -- ad esempio, le pipe ti interessano,
eccome, se l'obbiettivo e` quello di far girare un altro programma
e usarne lo standard-output.
Alex

 proprio). Chi sbaglia?
Tutti e nessuno.  Ci sono due standard in conflitto fra loro, entrambi ISO:
Posix, che definisce popen e altre funzioni che devono venire esposte in
stdio.h; e C, che vieta a stdio.h di esportare popen o altri identificatori
che non siano in una certa lista.  L'uso di _popen invece di popen serve
per cercare di rispettare appieno lo standard C, e "quasi" quello Posix
(infatti gli identificatori che iniziano con _ sono ammessi dallo std C).
Altri compilatori ancora definiscono _popen oppure popen a seconda
delle opzioni di linea comandi utilizzate per invocarli, che permettono
a ogni compilazione di scegliere fra i due standard.
Altre funzioni "quasi standard" che hanno simili problemi includono
strdup e stricmp.  Praticamente tutti i compilatori hanno queste
funzionalita`, ma per qualche ragione lo standard del C non le
ammette, da cui il proliferaredi _strdup e _stricmp (ecc ecc) nei
compilatori in modalita` "quasi ISO-C standard".
Alex

OE è innocente, il messaggio è arrivato su più NG..
--
Diego "1985" Pettenò
per gli spammer la mail è
diego...@hotmail.com
ATTENZIONE: rispondo ai messaggi di pubblicità indesiderata
su TiscaliNet con un bel messaggio al provider di competenza!
per i messaggi seri è
diego....@tiscalinet.it

Capisco: in azienda č collegato ad un server Exchange....
--
Diego "1985" Pettenň
per gli spammer la mail č
diego...@hotmail.com
ATTENZIONE: rispondo ai messaggi di pubblicitŕ indesiderata
su TiscaliNet con un bel messaggio al provider di competenza!
per i messaggi seri č
diego....@tiscalinet.it