Shell C++ (pomosh')

Модератор: Модераторы разделов

lyuba
Сообщения: 3

Shell C++

Сообщение lyuba »

o4en'nujna vasha pomosh'....
v univere zadali napisat' programmu a ya daje ne znayu s kakoi storoni podoiti k nei...
srazu izvinyayus' za oshibki (moi li4nij perevod s ivrita) :rolleyes:
o sebe: ya rabotayu na linux fedora, razrabotka v KDevelop.

1) programka pokazivaet na ekrane (promt=) i razreshaet useru pisat' komandi v unixe, posle najatiya na "enter"komanda vipolnitsya i budet novij promt dlya sleduyushei komandi.
tzel':
2) nujno napisat' legkij shell razreshayushei useru zapuskat' komandi unixa (ls, cat, sleep)
3) shell razreshaet zapustit' kommandi tol'ko v background.
4) ne nujno ponimat' komandi v kotorix est' pipe, direction i vse tomu podobnoe, no mojno razreshit' pe4atat' argumenti v komande.
5) moi shell ne tak kak v unixe budet vipolnyat' komandi tol'ko v background (ne nujno 4tob user pe4atal "&")
6) posle zapisi komandi i najatiya "enter" shell pokajet PID novogo processa i ego JOB ID (poryadkovij nomer dlya komandi, na4inayushijsya s 1-ogo)
7) najatie komandi JOBS pokajet spisok komand begushih v background vo vremya vipolneniya komandi.
8) shell ne doljen ponimat' komandi kotorie daet emu user, a perevedet komandi i argumenti v sistemu s pomosh'yu EXECV (ili EXECVE)
9) kak izvestno, posle EXECV kontrol' ne vozvrashaetsya k programme, poetomu nujno sozdat' process sin. vizov EXECV budet vipolnyatsya v processe sin.
10) potomu 4to vse komandi vipolnyayutsya v background, nel'zya jdat 4tobi sin zakon4il, a nujno nape4atat' na ekrane ego process_id processa kotorij sei4as bejit i razreshaet pe4atat' sleduyushie kommandi srazu je.
11) nujno sohranyat' v array spisok kommand 4tobi pokazat' ix kogda zaprosyat "JOBS"
12) komanda "JOBS" budet vipolnyatsya v foregraund a ne v background kak vse ostal'nie kommandi, takje ne nado ei dovat nomer job svoi.
13) EXECV prinimaet array of strings, pervoe mesto budet zapolneno kommandoi dlya vipolneniya a sleduyushie mesta budut zapolnyat' argumenti. 4tobi razdelit' input mojno pol'zovat'sya komandoi STROK.
14) zamet'te: nujno zabotit'sya 4tobi ne ostavalis' process v sostoyanii zombie na protyajenii vremeni, t.e. nijno zapustit WAIT v opredelennij promejutok vremeni dlya kommand kotorie bejali v background i zakon4ilis'.
15) posle zaversheniya kommandi, vitashit' iz array kommand (=spisok JOBS)

:helpsmilie: :helpsmilie: :helpsmilie: :helpsmilie: :helpsmilie: :helpsmilie: :helpsmilie: :helpsmilie:
:helpsmilie: :helpsmilie: :helpsmilie: :helpsmilie: :helpsmilie: :helpsmilie: :helpsmilie: :helpsmilie: :helpsmilie:
Спасибо сказали:
Ananas
Сообщения: 64

Re: Shell C++

Сообщение Ananas »

1. для командной строки использовать либы readline+history
2. запуск команд - fork(2)+exec(3)
3. писать свой обработчик sigchld для менеджмента списка запущеных задач
4. динамические структуры - из stl
Спасибо сказали:
lyuba
Сообщения: 3

Re: Shell C++

Сообщение lyuba »

нас4ет 1-ого, 3-ого и 4-ого мойно поялуиста информатзиыу.
ое4нь нуйно и совершенно не понятно.
Спасибо сказали:
Ananas
Сообщения: 64

Re: Shell C++

Сообщение Ananas »

Спасибо сказали:
lyuba
Сообщения: 3

Re: Shell C++

Сообщение lyuba »

спасибо большое, полу4ила 100!!! :new_biggrin: :new_cool: :new_tongue: :new_smile: :new_rolleyes: :new_wink_3:
Спасибо сказали: