Select, poll et EINTR
J'ai fais quelque modifications dans winPR pour corriger un bug dans les timers avec completion, et
je suis tombé sur un soucis qui pourrait intéresser d'autres personnes que moi.
Ça concerne la gestion des EINTR, quand un appel système est interrompu par l'arrivée d'un signal,
la réponse va être un -1 et errno positionné à EINTR. Par exemple quand on fait un select ou un read, la manière de se
protéger de ce comportement, c'est de faire le code suivant:
#include <sys/select.h> #include <errno.h> void myFunction() { struct fd_set rset; int status, max_fd; ... do { ret = select(max_fd, &rset, NULL, NULL, NULL); } while (ret < 0 && errno == EINTR); }
Bon et bien problème résolu, il suffit d'appliquer ce schéma à chaque fois qu'on a un appel système non ?
Celà fait quelques temps que je n'avais rien posté. Pour commencer, je vous souhaite une bonne année 2021, plein de
belles choses, des projets et puis la santé évidement ! Espérons que la Covid nous laissera un peu tranquille cette année.
Un post après une longue période sans rien publier. Récemment j'ai fait beaucoup de choses
autour d'ogon, et j'ai dû déployer à la chaine sur plusieurs machines pour des tests.
Le
Que les VMs windows sont lentes sous KVM ! Quand on travaille sur FreeRDP on est inévitablement
obligé d'avoir des VMs sous windows pour tester que les vieilles features marchent encore,
ou bien pour pouvoir essayer ces nouveautés fantastiques (oui j'aime les licornes).



