)
pclose (pipefp); return (0) ;
P\ tanie 8 (Uni\)
Przyjmijmy. ze procesy wykonał następujący ciąg operacji, tworząc m in. nowy proces potomny B
dpl=open (“aaa.txt".OJRDONLY); dp2*open{"bbb.txt",OJWRONLY) ; wrxte(dp2, buf, 300); /*zapis 300 bajtów z buf*/ close(dp3); dp4 = dup(dpi); if (fork();)
exit (0); /* tworzenie procesu B */ else (
dp5 * open("aaa.Cxt", OJRDONLY);
read (dp5, bufl, 50); read (dpi, bu£2, 20); exit (0);
>
Dła dpi~4. dp2=5, dp3=l: dp5-=6 naszkicuj rysunek przedstawiający tablice deskryptorów procesów A i B, systemowa tablicę plików oraz tablice i-węzłów w pamięci operacy jnej. Zwróć uwagę na liczniki bajtów do odczylu/zapisu oraz referencje do tablicy systemowej i tablicy i-węzłów.
P> łanie 9 (Um\)
Łącze nienazwane, umożliwiające komunikowanie się dwóch procesów, tworzone jest przy pomocy funkcji bibliotecznej pipę Szkic piogramu wywołującego funkcję pipę może nueć posiać: main() {
int fd[2]; pipe(fd);
>
Uzupełnij ten proces lak, aby tworzy ł proces potomny, a następnie skonfiguruj tak łącze nienazwane, aby proces potomny mógł przesiać nim do procesu macierzy siego następujący tekst „Syn do ojca: wszystko w porządku".
Py tanie ł0(Unix)
Rozważmy następujący ciąg instrukcji
grep main a.c b.c c.c > grepout & wc -1 < grepout & rm grepout &
Dlaczego ciąg tych poleceń me jest równoważny następującemu wierszowi poleceń (wyjaśnij to i podaj moziiwe różnice):
j grep main a.c b.c c.c 1 wc -1
Pytanie 11 (Unix)
Rozważmy dwa procesy odpowiednio AA i BB, pracujące pod kontrolą systemu Linux Najpierw uruchamiany jest (w tle) proces AA a potem BB (na pierwszym pianie). Co realizują oba procesy? Odpowiedź uzasadnij.
/* Proces AA.c */
linclude <stdio.h> linclude <stdlib.h> linclude <sys/stat.h> linclude <unistd.h> linclude <linux/stat.h>
Idefine JAKISPLIK “KOLO" int main(void)
(
FILE *fp;
char readbuf(80 J;
umask(0);
mknod(JAKISPLIK, S_IFIFOl0666, 0);
while (1)
fp «= fopen(JAKISPLIK, “r"); fgets(readbuf, 80, fp) ; printf("Otrzymany łańcuch: %s\n", readbuf);
fclose(fp);
return(0);
/* Proces B8.c */
linclude <stdio.h> linclude <stdlib.h>
Idefine JAKISPLIK "KOLO**
int main(int argc, char *argv{])
(
FILE *fp;
if ( argc !« 2 )
{
printf(“Stosuj: BB (stringJ\n“); exit(1);
)
if ((fp * fopen(JAKISPLIK, “w")) — NULL)
perror("fopen") ; exit(1);
fputs(argv(1), fp) ; fclose(fp); return(0);
Pytanie 12 (Unix)
Wyjaśnij działanie przedstawionego poniżej skryptu, zapisanego w pliku oko Co trzeba zrobić, aby skorzy stać z tego skryptu?
I?/bin/bash ddd () (
if [ » -d '•/kkk ) ; then mkdir ~/kkk
mv --force #8 -/kosz
Pytanie l3(Unix}
ile razy - po uruchomieniu poniższego programu - zobaczy my na ekranie napis Ola. l ola i Cola? Podaj liczbę utworzonych procesów potomnych. Odpowiedzi przekonywująco uzasadnij
int main () {
(
if (forkO) {
printf(„01a ") ; fork{);
if (forkO) { printf(„Tola ") ; forkO;}
prmtf („Cola ") ; exit (0);
Pytanie !4(Uni\)
Załóżmy, że mamy system, w którym zarejestrowanych jest 5000 uży tkowników. Chcemy, aby dokładnie 4900 użytkowników miało dostęp do tego samego pliku.
(a) Jak można określić ten rodzaj ochrony przyjmując metodę stosowaną w systemie Unix?
(b) Czy potrafisz zaproponować inny schemat ochrony, który można by było u t> m celu zastosować skuteczniej mż to rna miejsce w Uni.sie?
Py tanie 15 (Unix)
« tr/
Rozpatrzmy poniższy ciąg poleceń:
# groupadd Grupa-x
# useradd -g Grupa-X -s /bin/bash -n Olek
# passwd Olek
Co one oznaczają? Zmodyfikuj prawa dostępu do katalogu domowego użytkownika Olek tak, aby miały' postać: drw\r-.vr-x Pytanie 16{Unix)
Zinterpretuj zawartość rekordu pliku/etc/passwd na podstawie poniższego przykładu Olelcx:5Q2:5O2::/h0me/Olek:/biii/bast)
Pytanie |7(Untx)
Co jest automatyczne montowanie systemów plików? Jaką rolę w tym procesie pełni plik /etc/fstab?
Pytanie 18(Unix)
Co zobaczy my na ekranie po wykonaniu polecenia grep "SUSER” /etc/passwd /etc/group?
# •
Pytanie 19{Unix)
Wskaż niepoprawne polecenia oraz w każdym przy padku określ, jakiego ty pu komunikaty pokażą się na ekranie (o ile w ogóle się pojawią).
# echo abc > pl > p2
# echo def 1 cat < pl
# echo ghi > pl j cat
# cat < pl < p2
# echo ikl j i cat
# echo ]kl |> pl