Newsgroup: it.comp.lang.c++
Titolo: problema con system()

Salve,
sapete dirmi cosa c'è che non va in questo codice?
#include <iostream>
using namespace std;
int main () {
        system ("/home/luigi/Dati/Exe/basi.exe");
        return 0;
}
grazie
-- 
Luigi
--
bug windows [5] = {"95", "98", "NT", "Me", "2000"};

 sapete dirmi cosa c'è che non va in questo codice?
oltre al fatto che: 
1 - non includi l'header per system
2 - includi iostream che non usi
3 - sporchi inutilmente il namespace std
4 - ritorni 0 che e' superfluo
5 - esegui un exe su un sistema unix
?
Non so.

 #include <iostream>
mettici
#include <cstdlib>
EMG

 5 - esegui un exe su un sistema unix
E chi lo vieta? :-)
Ciao,
Nicola

 5 - esegui un exe su un sistema unix
Non ci vedo nulla di male a chiamare un eseguibile con un ".exe" finale


 come sotto Windows.
ma dai?-)

 5 - esegui un exe su un sistema unix
Perché è illegale?
ciao


 Questo lo considero un pregio e non un difetto.
de gustibus... :)

 Non sapevo quale fosse è per questo che ho postato.
vedo che usi linux, percio' avresti potuto usare man system

 3 - sporchi inutilmente il namespace std
Me ne sono reso conto solo ora, ma questo e' inesatto: non sporca il
namespace std, bensi' quello globale. E' in quest'ultimo che sono
iniettati tutti i nomi noti del namespace std.
Ciao,
Nicola

 iniettati tutti i nomi noti del namespace std.
vero. e' stato un lapis :)

 Questo lo considero un pregio e non un difetto.
Anche io. Sebbene sia superfluo non e' errato ed e' leggibile. IMHO e' come
quando vedo cose come "*p++". Non e' errato. Ma un bel paio di parentesi,
sebbene superflue, ci stanno bene.
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

 5 - esegui un exe su un sistema unix
come fai a sapere che sei su un sistema unix?*
[*] - domanda seria, non è una presa per i fondelli

    system("/home/luigi/Dati/Exe/basi.exe");


sebbene superflue, ci stanno bene.
Questione di gusti... io ormai ho metabolizzato *p++
e se vedessi *(p++) dovrei pensare di piu'.
Riguardo al "return 0" finale anche io lo preferisco...
anzi trovo assurda questa deroga alla presenza di un
return citata nello standard (a questo punto non era
meglio consentire un void main() con return vietato ???)
Mah... avranno avuto i loro motivi (o forse no... chi
ha partecipato a riunioni di lavoro numerose sa che a
volte e' incredibile cosa riescano a partorire i gruppi
anche quando l'intelligenza di ogni singolo partecipante
e' fuori discussione :DDDDD )
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

>    system("/home/luigi/Dati/Exe/basi.exe");
potrei avere una struttura di directory uguale anche in win...
Anto
--
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

 potrei avere una struttura di directory uguale anche in win...
Solo che dovresti usare \\ invece di / che viene di solito interpretato come
indicatore di un parametro (come - in unix).
Mi fai venire pero' il dubbio che forse qualche implementazione di system per
win accetta / come separatore di directory. Bisognerebbe controllare.


 potrei avere una struttura di directory uguale anche in win...
Però non penso che tu possa dare / come lettera d'unità


Invece lo standard lo richiede. E perchè secondo te sarebbe superfluo?
Lo standard direbbe invece che il return 0 finale può essere omesso. A
me sinceramente pare un cosa assurda, talmente assurda che lo metto in
tutti i miei programmi.
Il Ghenio
-----
ZIO : Fun and games are over with. Anyone who dares
get in my way shall perish.
DIO ci salvi dagli ocx del Viral Basic.
-----

>    system("/home/luigi/Dati/Exe/basi.exe");
Qualcuno di voi ha mai visto djgpp su dos?


 Qualcuno di voi ha mai visto djgpp su dos?
Oppure cygwin?
Ciao,
Nicola

win accetta / come separatore di directory. Bisognerebbe controllare.
direi che almeno nelle ultime versioni di win dovrebbe andare bene
anche /, altrimenti dove va a finire la tanto conclamata integrazione
tra internet e desktop se devo cambiare carattere di separazione
passando da una url ad una directory?


 passando da una url ad una directory?
Da nessuna parte. L'integrazione esiste solo se l'indirizzo e' una url. Se
scrivi "\pippo" stai accedendo ad una directory locale (local path). Se scrivi
"/pippo" e' come se stessi scrivendo "http:///pippo" con tre / (se il contesto
e' quello dell'explorer per cui il protocollo e' http). In ogni caso stai
scrivendo una url. E se scrivi "\\pippo" stai accedendo al server chiamato
pippo. Ovvero un unc. Fra nomi locali, url e unc esiste (o puo' esistere) una
corrispondenza. Ma le sintassi sono diverse (e' proprio questo che ti permette
di integrarli).


 Pero` non penso che tu possa dare / come lettera d'unita`
Sarebbe comuque un percorso valido. Se lo specificatore di unita` e`
omesso il percorso fa riferimento all'unita` corrente.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Sono un mirabile incrocio tra Tarzan e Giacomo Leopardi.
In me convivono tutte le doti intelluttuali di Tarzan e
tutta la prestanza fisica di Giacomo Leopardi.
A. Borsani

 omesso il percorso fa riferimento all'unita` corrente.
Salvo che nel mondo Windows (non so se valga per system, ma in alcuni altri
ambiti e' certamente cosi') la stringa viene analizzata per cercare di capire se
e' una url, un path (locale) o un UNC. E la stringa suddetta viene intepretata,
in base al protocollo nativo, come url ///home/luigi/Dati/Exe/basi.exe. Ovvero
se il protocollo base dell'applicazione e' http come
http:///home/luigi/Dati/Exe/basi.exe e dubito molto che questo possa poi essere
risolto.
