Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Tworzenie własnej powłoki

Ostatnio zmodyfikowano 2013-01-10 13:25
Autor Wiadomość
Hyphen
Temat założony przez niniejszego użytkownika
[C++] Tworzenie własnej powłoki
» 2013-01-06 15:25:56
Witam,

Piszę program, a mianowicie jest to własna powłoka.

Mam pewien problem, chcę aby powłoka zawierała wbudowane polecenie cd pozwalające na zmianę katalogu roboczego. Polecenie powinno akceptować nazwy ścieżkowe. Wykonane bez argumentu powinno zmieniać katalog roboczy
na katalog domowy użytkownika. Nie bardzo wiem jak się do tego zabrać, mój dotychczasowy kod wygląda tak:
C/C++
#include<iostream>

#include<string.h>
#include<stdlib.h>


usingnamespacestd;


intmain()
{
    stringcommand;
    cout << "\tIf you do not know what a shell command please enter 'help'!\n\n";
    while( command != "exit" )
    {
        if( command == "pwd" ) //Wbudowane polecenie pwd wyświetlające aktualny katalog roboczy
             system( "pwd" );
       
       
        elseif( command == "cd" )
        system( "cd" );
       
       
        elseif( command == "ls" )
        system( "ls" );
       
       
        elseif( command == "ll" ) //Wbudowane polecenie ll odpowiadające poleceniu ls *l.
        system( "ls -l" );
       
       
        elseif( command == "clear" )
        system( "clear" );
       
       
        elseif( command == "help" )
        cout << "pwd - Print name of current/working directory.\ncd - Built-in cd command allows you to change the working directory.\n\n"; // mini wersja man pwd
       
       
        elseif( command != "\0" )
        cout << "Error: unknown command!\n";
        cout << "#shell --> ";
        cin >> command;
    }
    return0;
}

Mógłby ktoś doradzić, ewentualnie pokazać na przykładzie jak to powinno być wykonane ?
P-73147
kubawal
» 2013-01-08 15:15:55
usingnamespacestd;
stringcommand;
intmain()
elseif
return0;
Najpierw naucz się podstaw! :)
Gdybyś umiał choć trochę C++, to byś wiedział, że to sie pisze oddzielnie
P-73315
DejaVu
» 2013-01-08 15:20:02
Poza tym... Twój program można napisać w praktyce tak:
C/C++
for(;; )
{
    std::string sPolecenie;
    std::getline( std::cin, sPolecenie );
    if( sPolecenie == "exit" )
         break;
   
    system( sPolecenie.c_str() );
} //for
Raczej chyba nie o to chodzi, aby cała rola programu sprowadzała się do wywołania poleceń systemowych :)
P-73316
bingo009
» 2013-01-09 21:29:26
Jednego nie rozumiem. Jaki jest sens tego programu?
P-73506
Hyphen
Temat założony przez niniejszego użytkownika
» 2013-01-10 13:25:59
Temat zamykam, ponieważ z tym problemem sobie poradziłem.
P-73519
« 1 »
  Strona 1 z 1