Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
noyau et appel systeme fcntl
Envoyé par: cosmoff

bonjour à tous,
lorsque je veux à travers deux processus lire un fichier j'utilise l'appel systeme fcntl qui se comporte comme un mutex pour les processus. Mais j'aimerai comprendre comment ca fonctionne.
car si mes deux processus font un appel systeme en meme temps alors les deux processus vont en meme temps etre en mode noyau et donc il n'y a pas de systeme de verrou.

Est ce que deux processus peuvent acceder en meme temps en mode noyau ?

Merci d'avance pour votre aide

Poste le Monday 11 February 2019 17:18:09
Répondre     Citer    
Re: noyau et appel systeme fcntl
Envoyé par: amelea

Je ne suis pas sur que l'on utilise un signal pour réveiller le process.
Mais il est toujours possible dans un programme en c de récupérer le déclenchement de tout signal.

En c pour faire ce que tu veux on se met en attente en mode non bloquant et on attend sur une event avec un timeout éventuelle.
Il est toujours possible par programme de déclencher cette évent.

Le code suivant se retrouve probablement dans le code de read.

//ouverture en mode non bloquant
dwFlagOuverture = dwFlagOuverture | O_NONBLOCK | O_ASYNC;
m_hHandle = open(un_szNom, dwFlagOuverture);

Puis attente événement:
bool bOk;
struct pollfd PollFd;
bool bFin = false;
PollFd.fd = m_hHandle;

PollFd.events = 0xefb;//POLLIN|POLLERR|POLLHUP;
while (!bFin) {
int iRetour = poll(&PollFd, 1, un_iTimeout);
switch (iRetour) {
case 0: //timout
break;
case -1: //erreur (errno)
break;
default: //Contient le nombre de structure
//ici récupérer les données
}//switch iretour
}

Poste le Friday 5 July 2019 08:24:03
Répondre     Citer    
Re: noyau et appel systeme fcntl
Envoyé par: amelea

erreur je me suis trompé de post.
Ce n'est pas la réponse à ta question.

Poste le Friday 5 July 2019 08:25:24
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
noyau et appel systeme fcntl
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons