PDA

Visualizza versione completa : C++ console


NS-1
08-09-2004, 11.27.22
come posso avviare dalla mia console principale un'altra console senza chiudere la prima?


grazie... :confused:

LoryOne
08-09-2004, 11.39.02
Alhazred ha utilizzato i semafori nella sua Battaglia Navale.

NS-1
08-09-2004, 11.47.06
..mhhhh vado a cercare qualcosa sui semafori.... :D (Y)

LoryOne
08-09-2004, 12.00.46
Si ma occhio che non è imperativo doverli usare.

NS-1
08-09-2004, 13.04.21
... :crying:

non so che fare....
ma è veramente difficile aprire nuove console senza chiudere il 'padre' o sono io che mi sono perso?

:crying:

non c'è qualche anima buona che mi butta giù qualche riga di codice?

:crying: :crying: :crying:


p.s. ho guardato i semafori ma per ora non sono in grado di usarli... non capisco come possano lasciarmi attive tutte le finestre...


:crying:

LoryOne
08-09-2004, 13.24.51
Originariamente inviato da NS-1
... :crying:

p.s. ho guardato i semafori ma per ora non sono in grado di usarli... non capisco come possano lasciarmi attive tutte le finestre...

:crying:

Il flusso delle istruzioni è sequenziale.
I semafori servono a porre un blocco al flusso fino a quando "qualcun altro" non lo sblocca.

Scaricati il codice di Alh, e cerca di capire.
Ricerca pure documentazione sulle API che lui ha richiamato ;)

Segui la discussione dall'inizio e poni l'attenzione sugli interrogativi che abbiamo posto e come li abbiamo risolti. C'è molto da imparare

NS-1
08-09-2004, 13.30.20
(Y)

ho poco tempo, ma oggi magari ci provo... :D

NS-1
13-09-2004, 14.05.51
(B)

P8257 WebMaster
29-09-2004, 09.33.03
Dunque,
fondamentalmente io non ho capito una cosa...

La nuova "console" che si apre deve essere un'altra istanza del processo (vedi thread Battaglia Navale) oppure deve essere lo stesso processo (p1) che apre un'altra finestra per gestirla separatamente?...

Bye :cool:

NS-1
29-09-2004, 12.45.02
nel programma proncipale c'è uno 'switch' e in base alla scelta effettuata nella console principale si deve avviare una nuova console e in essa eseguite tutte le istruzioni corrispondenti a quel 'case'...

tutte le console devono rimanere aperte... :D

P8257 WebMaster
29-09-2004, 12.49.00
Il modo più semplice per farlo .. è fare una "shell" che dal primo processo lancia altri processi in modo da tenere aperta la prima finestra console ed aprirne successivamente un'altra o più ...

Ti butto giù nel pomeriggio, un po' di codice...

Bye :cool:

NS-1
29-09-2004, 13.33.46
(Y)

P8257 WebMaster
29-09-2004, 15.58.17
Ok, questa è la soluzione più semplice, ma anche la più comprensibile a mio avviso ..


#include <stdio.h>
#include <conio.h>
#include <string.h>

int main(int argc, char* argv[])
{


if( (argc > 1) && (!strcmp(argv[1], "/SECONDO")))
{
printf("Questo è il secondo processo!!!\n\rPremi un tasto...\n");
getch();
return 0;
}


printf("0 - Esci\n1 - Lancia seconda istanza\nDigitare una scelta: ");
while (1)
{
switch(getch())
{
case 48: return 0;
break;
case 49: printf("\n\rLancio secondo processo...\n");
system("start shell_p.exe /SECONDO");
break;
default: printf("0 - Esci\n1 - Lancia seconda istanza\nDigitare una scelta: ");

}
}

return 0;
}



Il processo p1 fa una shell di se stesso eseguendosi tramite il comando "start"..è una soluzione comoda ma un po' "fai da te".. proporrò altri esempi più elaborati se interessano.

Bye :cool:

NS-1
29-09-2004, 16.51.15
m'interessa tutto ciò che vuoi propormi... :D
quindi non farti problemi nemmeno a mettere giù cose 'difficili'

grazie :D:D:D:D:D:D

NS-1
29-09-2004, 17.10.54
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
int prc = 1;
char str[] = {"start prova.exe "};


if( argc > 1)
{
printf("Questo e' il processo %s\n\rPremi un tasto...\n", argv[1]);
getch();
return 0;
}


printf("0 - Esci\n1 - Lancia un'altra istanza\nDigitare una scelta: ");

while (prc < 10)
{
switch(getch())
{

case 48: return 0;
break;

case 49:
if(++prc < 10){
printf("\n\rLancio processo %d...\n", prc);
str[strlen(str)-1] = (prc + 48);
system(str);
break;
}

default: system("CLS");
printf("0 - Esci\n1 - Lancia un'altra istanza\nDigitare una scelta: ");

}
}

return 0;
}


ti piace così? :D

NS-1
30-09-2004, 18.53.34
con i semafori invece?

Alhazred
30-09-2004, 19.26.49
Sinceramente non penso che i semafori possano esserti utili per questo tipo di applicazione, come già detto i semafori servono per mettere in attesa di una segnalazione un processo, non mi sembra sia questo il caso.

NS-1
01-10-2004, 14.35.06
ma bloccando l'esecuzione posso eseguire una determinata routine e solo alla fine di questa sbloccare il semaforo...

forse ho le idee confuse, sto facendo troppe cose insieme... non appena posso provare e mettere in pratica il tutto mi faccio risentire..

grazie a tutti per l'aiuto... spesso non saprei cosa fare senza di voi...

:D