Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/11/2008, à 13:52

Hei

Problème avec fonction execlp(...)

Bonjour à tous.

Je suis en train de coder un petit programme en C qui utilise les fonctions système, notamment fork() et exec().
Mon problème est le suivant, je cherche à créer un certain nombre de processus fils par le processus "père". Je souhaite ensuite effectuer un recouvrement pour chacun de mes processus fils avec une fonction de la famille exec().

Mes fils sont bien créés, le problème survient lors du recouvrement. Lorsque j'exécute mon programme, J'ai droit à un magnifique :

./navire.c: 1: /bin: Permission denied

Au cas où, je poste le morceau de code faisant appel à la fonction exec() :

for(n = 0; n < nb_navire; n++)
	{
		switch(fork())
		{
			case -1:
				printf("\nEchec du fork.");
				exit(-1);
			break;

			case 0:
				execlp("sh", "sh", "./navire.c", NULL);
			break;

			default:
				printf("\nPid processus pere = %d", getpid());
			break;
		}
	}

Comment puis-je faire pour que mon programme "ai le droit" d'utiliser sh ?
Je ne suis pas encore un "habitué" de Linux, j'ai fait quelques recherches avant de poster mais sans succès. J'espère ne pas poser un question de boulet neutral

Merci pour vos éventuelles réponses smile

Hors ligne

#2 Le 11/11/2008, à 14:39

Hei

Re : Problème avec fonction execlp(...)

Laissez tomber, j'ai trouvé smile

Déjà, j'avais une erreur de syntaxe : la commande à exécuter n'était pas " ./navire.c " mais " ./navire " (logique).
Ensuite, je devait spécifier un paramètre supplémentaire : " -c ".

Le code exact était donc " execlp( "sh",  "sh", "-c", "./navire", NULL ); "

Désolé pour ce post inutile hmm

Hors ligne