# Lista 4
###### tags: `SO`
## Zadanie 1
## Zadanie 2
**Działanie programu `scipt`**
`script` zapisuje cały input i output sesji terminala. Robi to ustawiając się między terminalem a nowym wywołaniem powłoki. Nie zostaną zapisane hasła, ponieważ nie są one `echo`-wane.
**ICRNL** tłumaczy powrót karetki na znak nowej linii (CR -> NL)
**ONLCR** tłumaczy znak nowej linii na znak powrotu karetki i nowej linii (NL -> CRNL)
## Zadanie 3
## Zadanie 4
## Zadanie 5
**Czemu nie można czytać i modyfikować katalogów przy pomocy wywołań read(2) i write(2)?**
Katalog jest jedynym typem pliku, który zawiera listę rekordów. W związku z tym odyczy i zapisy na nim w postaci bajtów mogą nie być do końca dobrym pomysłem.
**Jakim wywołaniem systemowym można wczytać rekord katalogu (ang. directory entry )?**
`readdir(directory)`
**Dlaczego zawartość
katalogu nie jest posortowana?**
System plików porządkuje zawartość tak, jak mu wygodnie.


**Wyświetl metadane katalogu głównego «/» przy pomocy polecenia «stat»,
a następnie wyjaśnij z czego wynika podana liczba dowiązań (ang. hard link)?**
Istnieje jedno dowiązanie na samego siebie i po jednym dowiązaniu dla każdego z podkatalogów.

## Zadanie 6
```c=
#include "csapp.h"
bool f_lock(const char *path) {
return (void)Open(path, O_CREAT|O_WRONLY|O_EXLOCK, 0700) >= 0);
}
void f_unlock(const char *path) {
Unlink(path);
}
```
## Zadanie 7
```c=
for (int i = max_fd; i > 2; i--){
char buf[250];
char filePath[PATH_MAX];
if(fcntl(i, F_GETPATH, filePath) != -1 && i != out) {
printf("FD: %d %s\n", i, filePath);
off_t t = lseek(i, 0, SEEK_SET);
read(i,&buf,255);
printf("Test: %s\n", buf);
}
}
```

## Zadanie 8
```c=
#include "csapp.h"
int main() {
struct stat *buf = malloc(sizeof(struct stat));
stat("./holes.bin", buf);
printf("st_blksize: %d\n", buf->st_blksize); /* Block size for filesystem I/O */
printf("st_stblocks: %d\n", buf->st_blocks); /* Number of 512B blocks allocated */
printf("st_size: %d\n", buf->st_size); /* Total size, in bytes */
printf("cl_size: %d\n", buf->st_blksize * buf->st_blocks);
}
```
Dzięki dziurom.