Suprimer shm sem msgqueue

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 317 fois - Téléchargée 23 fois

Contenu du snippet

Vous travaillez avec les IPC sous Unix? Vous vous plantez et vos files de messages, vos shared memory ou vos semaphores ne sont pas supprimés? Voici une petite source sans prétention qui nettoie tout sa pour vous.

Source / Exemple :


#include <stdio.h>
#include <stdlib.h>

// Semaphores
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>

// Shm
#include <sys/shm.h>

// Msg Queue
#include <sys/msg.h>

int main (int argc,char *argv[])
{
	int sem, shm, msq, ret;

	if (argc != 4)
	{
		printf("Entrez l'ID de la file de Message: ");
		scanf("%d",&msq);
		printf("Entrez l'ID de la SHM: ");
		scanf("%d",&shm);
		printf("Entrez l'ID du Semaphore: ");
		scanf("%d",&sem);
	}
	else
	{
		msq=atoi(argv[1]);
		shm=atoi(argv[2]);
		sem=atoi(argv[3]);
	}

	printf("\n");

	if(msq!=0)
	{
		printf("Suppression de la MSG Queue");
		ret=msgctl(msq, IPC_RMID, 0);
		if(ret==-1)
			printf("\t\t\t[!!]\n");
		else
			printf("\t\t\t[Ok]\n");
	}
	if(shm!=0)
	{
		printf("Suppression de la SHM");
		ret=shmctl(shm, IPC_RMID, 0);
		if(ret==-1)
			printf("\t\t\t[!!]\n");
		else
			printf("\t\t\t[Ok]\n");
	}
	if(sem!=0)
	{
		printf("Suppression du Semaphore");
		ret=semctl(sem, 0, IPC_RMID, 0);
		if(ret==-1)
			printf("\t\t[!!]\n");
		else
			printf("\t\t[Ok]\n");
	}

	exit(0);
}

Conclusion :


Utilisation:
cc -o IpcKill main.c
IpcKill 123 456 789
avec:
123=id Msg Queue
456=id Shm
789=id Semaphore

Un 0 ignorera l'élement.
Ex:
IpcKill 0 0 123
Ne supprimera que le semaphore 123

Pour obtenir les id, utilisez la commande "ipcs | grep $USER"

A voir également

Ajouter un commentaire Commentaires
z189632
Messages postés
11
Date d'inscription
mercredi 3 novembre 2004
Statut
Membre
Dernière intervention
9 septembre 2008

9 sept. 2008 à 11:05
Salut,

Je voudrais bien savoir comment faire pour lister ça, il y a t elle une fonction, ou un procédé ??
dounia_3
Messages postés
4
Date d'inscription
samedi 21 avril 2007
Statut
Membre
Dernière intervention
26 janvier 2008

26 janv. 2008 à 13:18
bonjour
j'utilise le c++ builder et je ne sais pas implémenter les boutons en relief, si vous pouvez m'aider:mon email est:
educ_3@yahoo.fr
merci beaucoup

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (Shibo_Sources)