Wykonanie komendy systemu – Wikipedia, wolna encyklopedia
Wykonanie komendy systemu – konstrukcja programistyczna zdefiniowana w określonym języku programowania umożliwiająca w kodzie źródłowym definiowanego algorytmu, wywołanie komendy systemu operacyjnego lub innego, wcześniej skompilowanego programu.
Stosowane rozwiązania
[edytuj | edytuj kod]Wywołanie komendy systemu operacyjnego lub innego programu dostępnego w systemie komputerowym, w kodzie źródłowym może być realizowane w różnych językach programowania lub ich implementacjach, za pomocą różnych, dostępnych w danym języku konstrukcji, takich jak:
- instrukcja
- podprogram
- inne, specyficzne dla danego języka lub systemu.
Instrukcja
[edytuj | edytuj kod]Instrukcja realizująca wywołanie w kodzie źródłowym komendy systemu lub innego programu, jest definiowana w językach programowania jako instrukcja prosta. Przykładem jest instrukcja rozkazu RUN w języku Clipper, która ma postać
<RUN | !*> <polecenie | wyrażenie_znakowe>
przy czym:
- polecenie obejmuje zarówno komendy systemu operacyjnego wraz z ewentualnymi argumentami ich wywołania jak i wywołanie programu, z podaniem ewentualnie ścieżki dostępu do programu i argumentów wywołania
- wyrażenie_znakowe jest wyrażeniem typu łańcuchowego, zawierającego zapis jak wyżej wywołania komendy lub programu.
Podprogram
[edytuj | edytuj kod]Podprogramy realizujące rozpatrywaną operację są najczęściej udostępniane w systemach programowania jako podprogramy standardowe: biblioteczne lub wbudowane. Wywołanie takiego podprogramu jest identyczne z wywołaniem innych podprogramów, a argumenty takiego wywołania specyfikują, w postaci wyrażenia łańcuchowego, komendę systemu lub program do wykonania.
Przykładowo w systemie programowania Turbo Pascal konstrukcja taka zaimplementowana została jako procedura podstawowego modułu System, dostępnego w każdym programie, bez deklaracji (w tym pakiecie programistycznym). Wywołanie procedury ma postać:
Exec(ścieżka, argumenty);
przy czym:
- ścieżka to nazwa komendy lub podprogramu z ewentualnie wyspecyfikowaną ścieżką dostępu do pliku programu
- argumenty to argumenty wywołania komendy lub programu (jeżeli występują).
Oba ww. parametry są typu łańcuchowego. Wraz z powyższą procedurą zdefiniowano w tym module także funkcję udostępniającą kod zakończenia uruchomionego programu o nazwie DosExitCode
.
W systemie Turbo Prolog, do tego samego celu służy specjalny predykat wbudowany o postaci:
- system(PolecenieDos)
- w którym Polecenie Dos ma postać literału łańcuchowego z komendą lub programem do wykonania
- system("")
- łańcuch pusty w wywołaniu oznacza przejście do systemu, do powłoki tekstowej DOS, powrót do programu następuje poleceniem exit.
W języku VBA zdefiniowana jest funkcja wbudowana Shell
. Nagłówek tej funkcji ma postać:
Function Shell(P As String, I As Integer) As Double
gdzie:
- P – nazwa wywoływanej aplikacji
- I – sposób wyświetlania aplikacji
- rezultat (typu Double) – identyfikator zadania (może być użyty w dalszej części kodu, np. do aktywacji uruchomionego zadania, i inne).
Sam system Windows oferuje w ramach biblioteki Windows API, funkcję ShellExecute
, która może być użyta do uruchomienia z kodu źródłowego innego zadania, praktycznie w każdym systemie programowania przeznaczonym dla Windows.
Ograniczenia
[edytuj | edytuj kod]Do najważniejszych ograniczeń w stosowaniu powyższej konstrukcji, szczególnie w starszych systemach komputerowych, należy niewątpliwie ograniczenie w ilości dostępnej pamięci, w której musi być dość zasobów dla programy wywołującego, monitora systemu i programu wywoływanego. Mogą też powstawać problemy co do ilości otwartych plików, w przypadku istotnych ograniczeń zawartych również w starszych systemach.
Komunikacja pomiędzy programem wywoływanym a wywołującym, również jest w starszych systemach ograniczona do kodu zakończenia i/lub plików pośredniczących w wymianie danych. W nowych systemach wielozadaniowych, okienkowych, działają już zupełnie inne mechanizmy.
Bibliografia
[edytuj | edytuj kod]- Andrzej Marciniak, Borland Pascal 7.0, Wyd. Nakom, Poznań 1994 r., seria: Biblioteka Użytkownika Mikrokomputerów, ISBN 83-85060-53-7, ISSN 0867-6011
- Janusz Szajna, Marian Adamski, Tomasz Kozłowski, Turbo Prolog. Programowanie w języku logiki., Wydawnictwa Naukowo-Techniczne, Warszawa 1991, Seria: Mikrokomputery. ISBN 83-204-1395-8
- Wojciech Rogowski, Arkadiusz Serodziński, Clipper 5.0, Wydawnictwo PLJ, Warszawa 1991, ISBN 83-85190-20-1
- John Walkenbach, Excel 2003 PL. Programowanie w VBA., HELION 2004 r., ISBN 837361-504-0