Utilisez flock () dans le gestionnaire de sigaction

flock() est généralement async-signal-safe car c’est un appel système. Sa sémantique rend difficile sa mise en œuvre différemment. Il ne figure pas dans la liste des fonctions sécurisées pour le signal asynchrone de POSIX, car il ne figure pas du tout dans POSIX.

Est-il possible d’utiliser flock() dans le gestionnaire de sigaction sans problèmes?

Selon @alk, répondez dans le sujet suivant:

Nous pouvons développer notre propriété flock() (son nom pourrait être async_flock() ). nous copions dans cette nouvelle fonction le contenu du code d’origine lockf() , puis nous lockf() les modifications suivantes afin d’obtenir une fonction async-signal-safe:

  • remplacez __fcntl par fcntl : nécessaire pour comstackr le code
  • remplace __set_errno() par errno = : nécessaire pour que le code soit compilé

  • remplace l’appel à memset() par les affectations appropriées. struct fcntl = {0} : nécessaire pour qu’il devienne async-signal-save.