[C++] Tworzenie własnej powłoki
Ostatnio zmodyfikowano 2013-01-10 13:25
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: #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" ) system( "pwd" ); elseif( command == "cd" ) system( "cd" ); elseif( command == "ls" ) system( "ls" ); elseif( command == "ll" ) 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"; 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 ? |
|
kubawal |
» 2013-01-08 15:15:55 Najpierw naucz się podstaw! :) Gdybyś umiał choć trochę C++, to byś wiedział, że to sie pisze oddzielnie |
|
DejaVu |
» 2013-01-08 15:20:02 Poza tym... Twój program można napisać w praktyce tak: for(;; ) { std::string sPolecenie; std::getline( std::cin, sPolecenie ); if( sPolecenie == "exit" ) break; system( sPolecenie.c_str() ); }
Raczej chyba nie o to chodzi, aby cała rola programu sprowadzała się do wywołania poleceń systemowych :) |
|
bingo009 |
» 2013-01-09 21:29:26 Jednego nie rozumiem. Jaki jest sens tego programu? |
|
Hyphen Temat założony przez niniejszego użytkownika |
» 2013-01-10 13:25:59 Temat zamykam, ponieważ z tym problemem sobie poradziłem. |
|
« 1 » |