Articles of posix

Changer une variable environnementale via un programme C

Tout le monde sait comment modifier les variables d’environnement Linux via un programme C? Je ne veux pas changer les variables d’environnement copiées pour l’exécution de ce programme. Je veux pouvoir changer sa valeur depuis un programme C et ensuite, lors de l’exécution de la commande ‘env’ sous linux, je peux voir que sa valeur […]

C pluginsystem: erreur de recherche de symbole

J’écris un système de plugin qui est séparé 3 autres modules: plugin_system.c – le kernel du système list.c – contient une implémentation de liste chaînée pour le stockage des plugins plugin_interface.h – contient la déclaration requirejse par les plugins, aucun fichier source n’est associé à plugin_interface.h ne contient que des types et la fonction: extern […]

mq_open () – EACCES, autorisation refusée

J’essaie de créer une queue de messages POSIX à partir d’un processus privilégié (en attente d’une lecture ultérieure), puis de l’ouvrir à partir d’un processus sans privilège (pour envoyer un message). La dernière requête mq_open () a renvoyé: EACCES. Si le processus de création et le processus d’ouverture sont tous deux privilégiés ou non privilégiés, […]

Posix expression régulière non-gourmande

Existe-t-il un moyen d’utiliser une expression régulière non gourmande en C comme on peut l’utiliser en Perl? J’ai essayé plusieurs choses, mais ça ne marche pas. J’utilise actuellement cette expression rationnelle qui correspond à une adresse IP et à la requête HTTP correspondante, mais c’est glouton même si j’utilise *?: ([0-9]{1,3}(\\.[0-9]{1,3}){3})(.*?)HTTP/1.1 Dans cet exemple, il […]

synchronisation entre processus utilisant des sémaphores non nommés

Dans process-1 , j’essaie d’écrire les données dans la mémoire partagée. En même temps, dans le process-2 je lis les données de la même mémoire partagée. dans ce cas, je dois fournir une synchronisation entre ces deux processus. si je vais passer par des sémaphores sans nom (en utilisant shm_init(),mmap() ), cela fonctionnera-t-il ou non? […]

Conserver les variables pthread locales

Existe-t-il un moyen, lors de l’utilisation de pthread.h sur un Linux GCC, de conserver les variables locales à la fonction de thread: int i = 42; // global instance of i int main() { pthread_t threads[2]; long t; pthread_create(&threads[t], NULL, ThreadFunction, (void *) t; pthread_create(&threads[t], NULL, ThreadFunction2, (void *) t; } Je me demande s’il […]

Quelle est la différence entre ssize_t et ptrdiff_t?

La norme C (ISO / IEC 9899: 2011 ou 9899: 1999) définit un type ptrdiff_t dans . Le standard POSIX (ISO / IEC 9945; IEEE Std 1003.1-2008) définit un type ssize_t dans . Quelle est la différence entre ces types (ou pourquoi ont-ils été jugés nécessaires)? Existe-t-il une implémentation dans laquelle le type de base […]

Comment partager un caractère existant * avec un autre processus?

J’essaie de partager de la mémoire avec un autre processus forked + execed en utilisant shmget et shmat : char test[]=”test”; int shID; char *shptr; key_t shkey = 2404; shID = shmget(shkey, sizeof(char)*(strlen(test)+1), IPC_CREAT | 0666); if (shID >= 0) { shptr = shmat(shID, 0, 0); if (shptr==(char *)-1) { perror(“shmat”); } else { memcpy(shptr, […]

Accès aux variables globales dans les pthreads de différents fichiers c

J’ai un main.c avec une variable globale appelée int countboards . Dans le main (), je commence un pthread, qui écoute ONE TCP-Connection et l’exécute via (progserver.c). Cela signifie que ce fil ne reviendra jamais. Dans main (), j’entre la fonction rmmain(…) qui se trouve dans le fichier rm.c (RM = Ressource Manager). Dans rm.c, […]

Quelle est la manière correcte d’avoir une seule fonction de gestionnaire de signal pour plusieurs signaux?

Quel est le meilleur moyen en C sous Linux de configurer un programme capable de gérer plusieurs signaux POSIX avec la même fonction? Par exemple, dans mon code, j’ai une fonction de gestionnaire que je souhaite appeler de manière générique chaque fois qu’un signal est intercepté pour effectuer certaines actions: /* Exit handler function called […]