Les fichiers vides sous linux.

De knowledge
Révision datée du 17 février 2025 à 13:23 par Jpinon (discussion | contributions) (Page créée avec « Le sujet peut paraitre surprenant mais il est important. Comment créer un fichier vide sous linux et comment "vider" un fichier.<syntaxhighlight lang="bash"> # Le fichier "fichier.txt" n'existe pas. # On vérifie ls -l fichier.txt # Retourne : # ls: cannot access fichier.txt: No such file or directory # Pour créer un fichier on fait: touch fichier.txt # Normalement touch sert à mettre à jour la date de dernière modification du fichier # En revanche si il n... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Le sujet peut paraitre surprenant mais il est important. Comment créer un fichier vide sous linux et comment "vider" un fichier.

# Le fichier "fichier.txt" n'existe pas.
# On vérifie
ls -l fichier.txt
# Retourne :
# ls: cannot access fichier.txt: No such file or directory

# Pour créer un fichier on fait:
touch fichier.txt 
# Normalement touch sert à mettre à jour la date de dernière modification du fichier
# En revanche si il n'existe pas (comme c'est le cas ici) il est cré "vide"

# On vérifie
ls -l fichier.txt
# Retourne :
# -rw-r----- 1 user users 0 Feb 17 11:49 fichier.txt
# le fichier a bien une taille de 0 octets.

# on le remplis avec :
date >> fichier.txt
date >> fichier.txt

# On vérifie
ls -l fichier.txt
# Retourne :
# -rw-r----- 1 user users 58 Feb 17 11:51 fichier.txt
# le fichier a bien grossi.
cat fichier.txt
# nous donne:
cat fichier.txt
# Mon Feb 17 11:50:59 CET 2025
# Mon Feb 17 11:51:01 CET 2025

Maintenant on suppose que ce fichier est ouvert par un process qui envoie des données dedans. Exemple en C (log.c):

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
    FILE *f;
    char ch;
    f = fopen("fichier.txt", "a");
    if(f==NULL){
        printf("Erreur lors de l'ouverture d'un fichier");
        exit(1);
    }
    while((ch=getchar())!=EOF){
        fputc(ch, f);
    }

    fclose(f);

    return 0;
}

On le compile

cc -o addlog log.c

On lance ce petit programme et on tape deux lignes :

ligne 1
ligne 2

On laisse tourner notre programme et, sur une autre console on regarde ce qu'il y a dans le fichier.

Mon Feb 17 11:50:59 CET 2025
Mon Feb 17 11:51:01 CET 2025

ligne 1
ligne 2