Programowanie Systemowe w Języku C (powtórzenie)

Hello world

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("Hello world!\n");
    return 0;
}

Kompilacja

  • gcc source.c -o program – kopiluje kod źródłowy z pliku source.c uzyskując w efekcie wykonywalny plik binarny program,
  • gcc -Wall source.c -o program – włącza wszystkie ostrzeżenia (-W – warn, all – wszystkie),
  • gcc -o0 -g source.c -o program – wyłącza optymalizacje i dodaje dane pozwalające na debugowanie programu
  • gcc -pthread source.c -o program – włącza obsługę wątków standardu POSIX
  • gcc -std=c99 source.c -o program – kompilacja wg standardu C99.

Pliki

  • Otwarcie pliku:

    int open(const char *pathname, int flags);
    int open(const char *pathname, int flags, mode_t mode);
    int creat(const char *pathname, mode_t mode);
    
  • Duplikacja deskryptora:

    int dup(int oldfd);
    int dup2(int oldfd, int newfd);
    
  • Zamknięcie pliku:

    int close(int fd);
    
  • Usunięcie pliku:

    int unlink(const char *pathname);
    
  • Odczyt z pliku:

    int read(int fd, void *buf, size_t count);
    
  • Zapis do pliku:

    int write(int fd, void *buf, size_t count);
    
  • Przesunięcie kursora:

    long lseek(int fd, off_t offset, int whence);
    

Zadania

1. Napisz program append który dopisuje na koniec pliku \(F\) słowa \(w_0, w_1, ..., w_n\) (każde słowo w nowej lini). \(F\) i \(w_0, w_1, ..., w_n\) są podawane przez argumenty/paramtery.

2. Napisz program set który dopisuje na koniec pliku \(F\) słowa \(w_0, w_1, ..., w_n\) (każde słowo w nowej lini). Słowo \(w_i\) zostaje dopisane do pliku tylko jeśli \(w_i\) nie występuje w \(F\). \(F\) i \(w_0, w_1, ..., w_n\) są podawane przez argumenty/paramtery.

3. Napisz program replace który w pliku \(F\) zamienia linię \(w\) na linię \(r\). \(F\), \(w\) i \(r\) są podawane przez argumenty/paramtery.

4. Napisz program insort który dopisuje do pliku \(F\) słowo \(w\) (w nowej lini) w taki sposób, że \(F\) jest posortowany leksykograficznie na wyjściu. Można założyć, że wejściowy \(F\) jest posortowany. \(F\) i \(w\) są podawane przez argumenty/paramtery.