Quelques APIs en vrac

ftoc()

Cette fonction convertit un nom de fichier en identifiant key_t

Elle est utile lorsque l'on a besoin d'un identifiant unique à partager entre plusieurs processus (mémoire partagée, fichiers mappés en mémoire)

ftok.c

lock des fichiers avec fcntl()

Un exemple de lock de fichiers qui fonctionne sur toutes les versions d'Unix (à ma connaissance). Il utilise la fonction fcntl() :

lockdemo.c

Voir aussi un exemple qui marche sous Unix et Windows

Voir aussi un exemple qui ne marche que sous Windows

fichiers mappés en mémoire avec mmap()

L'API mmap() mappe le contenu d'un fichier en mémoire. Cette technique est très utile lorsque l'on souhaite partager de la mémoire entre plusieurs processus.

Dans ce cas, on prendra toujours garde à protéger l'accès aux données avec des sémaphores si la même zone de données doit être accédée par plusieurs processus en même temps. La classe cfilemap.cpp (cfilemap.h) permet de mapper une partie d'un fichier en mémoire. Elle fonctionne aussi sous Windows (Implémentation avec CreateFileMapping()).

Les sémaphores avec semget()

Elle permettent notamment de gérer l'accès aux données en mémoire partagée (par exemple) par plusieurs threads (ou processus) en implémentant un système de lock :

Voir semaphore.c (semaphore.h)

La mémoire partagée avec shmget()

On peut préférer l'utilisation de shmget() à mmap() lorsque cette dernière n'est pas présente sur le système Unix.

Voir memshare.c (memshare.h)

Les posix threads

Leur utilisation est très semblable aux threads de Windows. Il existe d'ailleurs un projet pour Windows et Windows CE ayant réalisé ce portage. A ne pas manquer.

Voir thread.c et le makefile venant tout droit d'Internet.

Liens

Valid XHTML 1.0!