Systémové programování pro blbečky

Část 1: Vytvoření souboru a zápis dat

Pojďme vytvořit nový soubor a zapsat do něj textový řetězec.

Použijeme funkci open(). Ta vyžaduje název souboru a příznaky (flags).

  • O_WRONLY říká, že chceme do souboru pouze zapisovat.

  • O_CREAT zajistí, že pokud soubor neexistuje, systém ho vytvoří.

  • O_TRUNC vymaže obsah souboru, pokud už existoval, abychom začínali s čistým štítem.

Při vytváření musíme také specifikovat výchozí práva (např. 0644 znamená, že vlastník může číst i zapisovat, ostatní jen číst). Pro samotný zápis použijeme funkci write(). Nakonec soubor zavřeme pomocí close().

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>

int main() {
    const char *filename = "tutorial_soubor.txt";
    const char *text = "Ahoj, toto jsou binarni data ulozena v Linuxu.\n";

    // 1. Otevření/Vytvoření souboru
    // Práva 0644: Vlastník (čtení+zápis), Skupina (čtení), Ostatní (čtení)
    int fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0644);
    
    if (fd == -1) {
        perror("Chyba při otevírání souboru");
        return 1;
    }
    printf("Soubor '%s' byl úspěšně vytvořen.\n", filename);

    // 2. Zápis dat do souboru
    ssize_t bytes_written = write(fd, text, strlen(text));
    if (bytes_written == -1) {
        perror("Chyba při zápisu");
        close(fd);
        return 1;
    }
    printf("Zapsáno %ld bajtů.\n", bytes_written);

    // 3. Zavření souboru
    close(fd);
    return 0;
}

Co jsme se naučili?

  1. Jak otevřít soubor

     

  2. Jak zapsat data do souboru