|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Oct 2005
Messaggi: 20
|
[C++]Shell Linux
Salve a tutti mi servirebbe qlkuno ke abbia realizzato in c++ una shell di Linux...se qlkuno è così gentile da potermi aiutare..pleaseeeeeeee!!!!
Xkè ho provato ma nn ci riesco proprio Ultima modifica di giovessj : 06-07-2006 alle 22:03. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Messaggi: 357
|
posta quello che hai fatto e di cui hai dubbi e ti si da una mano
|
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
com'è che proprio in questi momenti scema la passione degli opensourcisti...?
![]() leggiti il codice di bash visto che è open, no?
|
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Oct 2005
Messaggi: 20
|
Scusa mika mi potrsti dare il link dove trovare il codice di bash??
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2004
Messaggi: 357
|
|
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Oct 2005
Messaggi: 20
|
Grazie mille Andrea molto gentile ma sapevo cercare anke io su google
io chiedevo se c'era qlkuno molto gentile da darmi il link dove c'è già scritto il codice in c++.....è quello ke a me serve xkè come funzione una shell, cm funzionano le fork ecc.. lo so e anke molto bene...ma me servirebbe il codice sorgente della shell!!!
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
ma é in C, non C++. Se non sbaglio é su sourceforge.net
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#8 |
|
Junior Member
Iscritto dal: Oct 2005
Messaggi: 20
|
A me va bene anke in c...mika potresti postarlo o al max darmi il link dove si trova su sourceforge.net xkè io ho visto ma nn sono riuscito a trovarlo...te ne sarei molto grato....
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Nov 2004
Messaggi: 357
|
il link con google non era uno scherzo
prendi il primo risultato, trovi il tar con i sorgenti |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
ho un tar gzippato ma é di 3.5 Mega. Se mi dai una mail dove mandartelo perché qui il limite é di 24.4 Kb
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#11 |
|
Junior Member
Iscritto dal: Oct 2005
Messaggi: 20
|
Ho visto quello ke dicevi tu Andlea ma sai qual è il fatto ke a me serve scrivere un codice di una shell semplice:
cioè una shell simile a quella di linux ke funzioni sotto linux e ke prenda un comando tipo ls e mi stampi il contenuto della cartella o ce vada avanti e indietro tra le cartelle o ke compili un file c o c++ ecc.... |
|
|
|
|
|
#12 |
|
Junior Member
Iscritto dal: Oct 2005
Messaggi: 20
|
ok trallallero ti ho mandato un mex privato cn la mia mail...poi inviarlo li tnx..
Ultima modifica di giovessj : 07-07-2006 alle 14:36. |
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#14 |
|
Junior Member
Iscritto dal: Oct 2005
Messaggi: 20
|
ok grazie mille sei stato gentilissimo anke se vedrò di prendere spunto da questa visto ke quello ke devo fare io è a livello molto + basso....
Alla fine io nn devo far altro ke realizzare una semplicissima lettura di stringa di comando in linux con fork e exec...vabbè dai io ora ci provo poi se nn va il codice te lo posto qui e al max mi aiuti...xkè pensavo ke la shell l'avessi fatta te mentre quello ke mi hai mandato è il codice sorgente della bash....cmq di nuovo mille grazie!! |
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
![]() io l'ho solo modificata per personalizzarla, piccole modifiche per uso personale. no no aspetta! 3.5 Mega di sorgente non ti passa piú manda la traccia del problema e il codice che hai scritto dai
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#16 |
|
Junior Member
Iscritto dal: Oct 2005
Messaggi: 20
|
La traccia è la seguente:
-Realizzare in c++ la shell i linux..cioè la gestione dell'input e dell'output... -Il probelma consiste nel realizzare in un file .cpp un codice il quale riceva in ingresso una stringa del tipo (ls) e dia in output il comando linux...tt qui.... #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> char **crea_vettore(char *stringa); void dealloca(char **array_di_stringhe); int main (int argc, char *argv[]){ int pid,i; int status; char *stringa;//stringa dove memorizzo la stringa dei comandi char **stringhe; //array di stringhe stringa=(char *)calloc(20,sizeof(char)); if ((stringa=fgets(stringa,20,stdin)) == NULL) exit(1); while ( strncmp(stringa,"stop",4) != 0){ stringhe=crea_vettore(stringa); if ( (pid = fork()) < 0){ perror("fork"); exit(1); }else{ if (pid == 0){//figlio if ( execvp(stringhe[0],stringhe) < 0 ) perror("execvp"),exit(1); }else{//padre //aspetto la terminazione di mio figlio wait(&status); //dealloca(stringhe);//libero memoria }//fine else padre }//fine else if ((stringa=fgets(stringa,20,stdin)) == NULL) exit(1); }//fine while exit (0); } char **crea_vettore(char *stringa){ char **stringhe; char *parola=NULL; int i=0, size=1, j=0; if ((stringhe=(char **)malloc(size*sizeof(char *))) == NULL) perror("malloc"),exit(1);//errore allocazione while ( stringa[i] != '\0' ){//scandisco tutta la stringa e la divido in tante parole while ( (stringa[i] != ' ') && (stringa[i] != '\0') && (stringa[i] != '\n')){ //costruisco la parola parola=(char *)realloc(parola,(j+1)*sizeof(char *)); parola[j]=stringa[i]; j=j+1; i=i+1; } if ( ( stringa[i] == ' ') || (stringa[i] == '\n') ) i=i+1; printf("parola= %s\n",parola); if (parola != NULL){//parola trovata stringhe=(char **)realloc(stringhe,(size+1)*sizeof(char *)); if ( (stringhe[size-1]=(char *)malloc(strlen(parola)+1)) == NULL) perror("malloc"),exit(1);//errore allocazione strcpy(stringhe[size-1],parola); size=size+1; } parola=NULL; j=0; } stringhe[size-1]=NULL;//fine dell array di stringhe return (stringhe); } void dealloca(char **array_di_stringhe){ int i=0; while ( array_di_stringhe[i] != NULL ){ free(array_di_stringhe[i]); i=i+1; } free(array_di_stringhe[i]); free(array_di_stringhe); return; } questo è quello ke ho fatto.... dovrebbe funzionare + o - in questo modo e poi dovrei realizzare in visualc++ un'interfaccia grafica!! Ultima modifica di giovessj : 09-07-2006 alle 09:56. |
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
Codice:
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char **argv )
{
system( argv[1] );
}
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#18 |
|
Junior Member
Iscritto dal: Oct 2005
Messaggi: 20
|
No io devo scrivere il codice della shell...devo farla io la gestione della stringa in ingresso e la gestione dei processi padre e figlio...il codice ke mi hai scritto a ke serve????
|
|
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
argv[1] é il primo parametro che passi all'eseguibile. se passi ls all'eseguibile "lui" fa ls Adesso peró devo fare un lavoro su Oracle per un pó ...
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#20 |
|
Junior Member
Iscritto dal: Oct 2005
Messaggi: 20
|
ok ti kiedo solo un favore...qndo hai tempo potresti modificarmi il codice e aggiustarmelo in maniera corretta?...anke se è in c nn fa nulla al max poi lo modifico in c++...cmq ora ti lascio al tuo lavoro...se e qndo puoi riesci a farmi sto piacere te ne sarei grato...cmq grazie mille di tt
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:06.





















