Détécter l'arrivée d'un fichier
Fermé
CatEndal
Messages postés
39
Date d'inscription
samedi 25 mars 2017
Statut
Membre
Dernière intervention
3 mai 2018
-
7 août 2017 à 22:08
CatEndal Messages postés 39 Date d'inscription samedi 25 mars 2017 Statut Membre Dernière intervention 3 mai 2018 - 20 août 2017 à 20:35
CatEndal Messages postés 39 Date d'inscription samedi 25 mars 2017 Statut Membre Dernière intervention 3 mai 2018 - 20 août 2017 à 20:35
A voir également:
- Détécter l'arrivée d'un fichier
- Fichier rar - Guide
- Fichier host - Guide
- Fichier iso - Guide
- Téléchargez cette archive (dossier compressé). en extraire tous les fichiers dans un dossier local. quel fichier contient l’expression trouverpix ? ✓ - Forum Windows
- Comment réduire la taille d'un fichier - Guide
1 réponse
mamiemando
Messages postés
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
Modifié le 18 août 2017 à 10:28
Modifié le 18 août 2017 à 10:28
Bonjour
Une boucle while va malheureusement conduire à utiliser 100% de ton CPU en permanence, car tu vas en permanence examiner si le répertoire a été modifié. Dans ton cas il faudrait plutôt que le programme réagisse quand le répertoire est modifié. Réagir à un événement conduit à la programmation asynchrone.
Il existe plusieurs manières de faire de la programmation asynchrone :
- epoll sous linux
- kqueue sous freebsd
- des fonctions spécifiques à windows
- utiliser une librairie comme libevent ou la GLib, permettant de s'affranchir du système.
Quelle que soit la solution adoptée, il faut se familiariser avec des notions comme les boucles d'évenements, les callbacks etc...
Dans ton cas, je partirais sur la GLib propose des classes qui permettent d'écrire ce genre de programme. En particulier, dans ton cas, la structure qui t'intéresse est :
https://developer.gnome.org/gio/stable/GFile.html#g-file-monitor-directory
Malheureusement, la GLib nécessite de se familiariser avec la programmation asynchrone et les boucles d'événements (GMainLoop). La documentation est bien faite, mais il y a très peu d'exemples sur Internet, ce qui rend la librairie pas forcément simple à prendre en main.
Voici toutefois quelques exemples qui illustrent un peu leur utilisation :
http://develissimo.com/forum/topic/93276/
http://db0fhn.efi.fh-nuernberg.de/~dg8ygz/Linux_Source/cheese-2.30.1/src/cheese-thumb-view.c
Bonne chance
Une boucle while va malheureusement conduire à utiliser 100% de ton CPU en permanence, car tu vas en permanence examiner si le répertoire a été modifié. Dans ton cas il faudrait plutôt que le programme réagisse quand le répertoire est modifié. Réagir à un événement conduit à la programmation asynchrone.
Il existe plusieurs manières de faire de la programmation asynchrone :
- epoll sous linux
- kqueue sous freebsd
- des fonctions spécifiques à windows
- utiliser une librairie comme libevent ou la GLib, permettant de s'affranchir du système.
Quelle que soit la solution adoptée, il faut se familiariser avec des notions comme les boucles d'évenements, les callbacks etc...
Dans ton cas, je partirais sur la GLib propose des classes qui permettent d'écrire ce genre de programme. En particulier, dans ton cas, la structure qui t'intéresse est :
https://developer.gnome.org/gio/stable/GFile.html#g-file-monitor-directory
Malheureusement, la GLib nécessite de se familiariser avec la programmation asynchrone et les boucles d'événements (GMainLoop). La documentation est bien faite, mais il y a très peu d'exemples sur Internet, ce qui rend la librairie pas forcément simple à prendre en main.
Voici toutefois quelques exemples qui illustrent un peu leur utilisation :
http://develissimo.com/forum/topic/93276/
http://db0fhn.efi.fh-nuernberg.de/~dg8ygz/Linux_Source/cheese-2.30.1/src/cheese-thumb-view.c
Bonne chance
20 août 2017 à 20:35