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