sprawko6

WOJSKOWA AKADEMIA TECHNICZNA

LABORATORIUM

SYSTEMÓW OPERACYJNYCH

Laboratorium nr 5

Grupa
Lp.
1.
  1. Treść zadania.

Napisać program powłoki (shell) w języku C, który za pomocą funkcji fork i exec będzie realizował polecenia ls, who, date oraz cat.

  1. Kod programu.

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <string.h>

#define max 3

int kom(char *l, char **s){

char *c;

int i=0;

c=strtok(l," ");

while(c!=NULL && i<(max-1)){

s[i]=c;

c=strtok(NULL," ");

i++;

}

s[i]=NULL;

return i;

}

main(){

char *s[max];

char l[50];

int i,j;

printf("\n");

while(1){

write(1,"shell> ",7);

i=read(0, l, 50-1);

if(i==0) break;

l[i]=0;

if(l[i-1]=='\n') l[i-1]=0;

j=kom(l, s);

if(strcmp(s[0],"exit")==0){

return 0;

}

if((strcmp(s[0],"ls")==0) || (strcmp(s[0],"who")==0) || (strcmp(s[0],"date")==0) || (strcmp(s[0],"cat")==0)){

if(j>=1){

if(fork()==0)

execvp(s[0],s);

else{

int pid,stat=1;

pid=wait(&stat);

}

}

}

}

}

  1. Podsumowanie.

Dzięki funkcji fork oraz exec mogłam stworzyć własny interpreter poleceń.

Jeżeli wywołamy funkcję fork (jak jest to w powyższym kodzie programu) po wcześniejszym podaniu argumentu np. ls. Fork wywoła proces o nazwie ls, ponieważ jest to skrypt powłoki, zostaje wywołany w taki sam sposób jak gdyby użytkownik w terminalu wpisał komendę ls. Interpreter powoduje wywołanie poprzez stworzenie nowego procesu danej funkcji podanej do interpretera.

Jest to przykład bardzo ciekawego i pouczającego (dla osoby dopiero poznającej systemy UNIX) zastosowania funkcji fork oraz exec.


Wyszukiwarka

Podobne podstrony:
El sprawko 5 id 157337 Nieznany
LabMN1 sprawko
Obrobka cieplna laborka sprawko
Ściskanie sprawko 05 12 2014
1 Sprawko, Raport wytrzymałość 1b stal sila
stale, Elektrotechnika, dc pobierane, Podstawy Nauk o materialach, Przydatne, Sprawka
2LAB, 1 STUDIA - Informatyka Politechnika Koszalińska, Labki, Fizyka, sprawka od Mateusza, Fizyka -
10.6 poprawione, semestr 4, chemia fizyczna, sprawka laborki, 10.6
PIII - teoria, Studia, SiMR, II ROK, III semestr, Elektrotechnika i Elektronika II, Elektra, Elektro
grunty sprawko, Studia, Sem 4, Semestr 4 RŁ, gleba, sprawka i inne
SPRAWKO STANY NIEUSTALONE, Elektrotechnika, Elektrotechnika
SPRAWOZDANIE Z farmako, Farmacja, II rok farmacji, I semstr, fizyczna, Fizyczna, Sprawozdania z fizy
mmgg, Studia PŁ, Ochrona Środowiska, Chemia, fizyczna, laborki, wszy, chemia fizyczna cz II sprawka
Zadanie koncowe, Studia PŁ, Ochrona Środowiska, Biochemia, laborki, sprawka
Piperyna sprawko PŁ, chemia produktów naturalnych, ćw. 5 PIPERYNA
03 - Pomiar twardości sposobem Brinella, MiBM Politechnika Poznanska, IV semestr, labolatorium wydym
Sprawozdanie nr 1 CECHY TECHNICZNE MATERIAfLOW BUDOWLANYCH, Budownictwo studia pł, sprawka maater
Sprawko badanie twardosci, Studia, WIP PW, I rok, MATERIAŁY METALOWE I CERAMICZNE, SPRAWOZDANIA
sprawko z ćwiczenia 11, Farmacja, II rok farmacji, I semstr, fizyczna, Fizyczna, Sprawozdania z fizy

więcej podobnych podstron