Rechercher : dans
Par :

Expliquation sur les commande arriere paln &

Dernière réponse le 3 avr 2009 à 00:20:20 yasminou, le 2 avr 2009 à 15:02:42 
 Signaler ce message aux modérateurs

Bonjour,
je dois ecrire un programme en C qui permet d'executer les commande en avant et arriére plan,alors avant plan pas de problème le processus père doit attendre la terminaison du processus fils ,mais dans le cas d'une commande arriere plan on doit eviter que ce processus reste zombie normalement on utilise waitpid avec l'option WNOHANG mais je sais pas comment gérer les signaux j'ai pa bien compris comment sa se passe la communication asynchrone entre le processus père et son fils qui s'execute en arrière plan
pouvez vous m'eclaircir?

P.S:j'ai essayé d'executer avec execvp et dans le programme du père je fait pa un wait ,bah
par exemple si je tape ps& il m'affiche:
segmentation fault
Press ENTER to continue.
puis il m'affiche le resultat de ps

merci

Configuration: Linux
Konqueror 3.5

Meilleures réponses pour « expliquation sur les commande arriere paln & » dans :
Bash - Les paramètres Voir Introduction Les paramètres positionnels Exemple 1 Les paramètres spéciaux Exemple 2 Initialiser des paramètres - La commande "set" - Exemples - La commande "shift" - Exemple 3 Introduction Il est possible de fournir à un script,...
Commandes Linux Voir Tableau des principales commandes Linux Commande Description équivalent DOS ls liste le contenu d'un répertoire dir cd change de répertoire cd cd .. répertoire parent cd.. mkdir crée un nouveau...
Liste des commandes Windows VoirRemarques : Certaines commandes sont dangereuses (l’exemple de SYSKEY) et peuvent causer des problèmes pouvant conduire au formatage. D’autres commandes ne sont pas exécutables sous Windows XP ou des versions antérieures, je ne les ai pas...
[MS-Dos] Commandes DOS de base VoirCes commandes sont des commandes de base que vous pouvez utiliser dans un prompt DOS, par exemple, sur une disquette de démarrage. Pour obtenir plus d'informations sur ces commandes, tapez (dans un prompt DOS), le nom de votre commande suivi de...
Commandes IP relatives aux réseaux sous Windows VoirIl est parfois très utile de connaître les commandes IP, pour analyser voire configurer ses réseaux TCP/IP. Voici la liste de ces commandes à utiliser dans une fenêtre DOS...
Télécharger Atelier Web Remote Commander VoirSi vous vous souciez de la maintenance et de l’optimisation de votre ordinateur, même quand vous n’êtes devant, utilisez des programmes de commande à distance. Atelier Web Remote Commander (AWRC) est un outil puissants conçu pour la...
Les arrière-plans VoirInsérer une image en fond Il est possible de définir une image d'arrière-plan pour la page web grâce aux attributs de la balise  : Attribut Effet Visuel BACKGROUND="image" Affiche l'image en arrière...
Commandes UNIX VoirTableau des principales commandes UNIX Commande Unix Description Options ls liste le contenu d'un répertoire -a Affiche tous les fichiers, y compris les fichiers cachés ...
Les commandes AS/400 VoirLes commandes de l’AS/400 Il existe environ un millier de commandes dans l'OS/400, regroupées sous le nom de « Langage de Contrôle ». Un utilisateur pourra les lancer depuis la ligne Option ou Commande située au bas de l'écran, quand celle-ci est...

1

macartur95, le 2 avr 2009 à 19:33:04

Bonsoir,

Le & maintient en tache de fond un programme dans le shell du terminal qui l'a lancé et il faut un exit 0 dans le shell ou un code similaire en C pour lui dire que le programme est terminé correctement et l'os tue tous les process.

Le & détache le terminal du système (coupure connexion automatique par les switchs ...) ,le programme continuant .
on utilise le & pour lancer un programme très long et en cas de coupure de la connexion telnet,ssh au serveur ,il continue sinon ça kill le process.

Répondre à macartur95

2

yasminou, le 2 avr 2009 à 23:12:35

Merci pr votre reponse
bah j'execute les commandes dans une boucle
while(1)
{
lire commande();
executer(commande)
}

dans executer commande si commande avnat plan je fais un wait dans le père sinon je sais pas comment eviter comment qu'il reste zombie?
alors qu'est ce que j'ai fait,si commande arriere plan normalement j'affiche pas le resultat de la commande alors je le derige vers /dev/null
je pense le beug est la puisque il boucle infiniment je sais pas si mon raisonnement est juste,si c'est le cas est ce qu'il faut faire d'autre traitement supplementaire?
sinon si je travaille avec waitpid avec l'option NOHANG est ce que je dois a chaque fois verifié la liste qui contient les PID des processus qui s'executent en arriere plan?
merci d'avance

Répondre à yasminou

3

macartur95, le 2 avr 2009 à 23:26:04

Bonsoir,

Désolé je ne connais pas le c ; votre boucle while ne finit jamais meme en sortie de votre programme,il faut un done mais les { } me font tiquer; normalement une boucle while ressemble à ça

while [ condition ]
do
statements
done

Répondre à macartur95

4

yasminou, le 2 avr 2009 à 23:53:19

Les {} c'est normal en langage C
le probleme n'est pa la ,c'est comment informé le processus père de la terminaison de l'un de ses fils qui s'execute en arriere plan

PS: je suis obligé de travaillé en C
thanks

Répondre à yasminou

5

macartur95, le 3 avr 2009 à 00:06:15

On dit par forker en langage c processus qui en genere un autre

je vais paraitre neuneu mais on dirait que vous compilez du bash avec du c ou c'est la syntaxe du c.

Je ne peux pas vous aider plus,je ne fais que du shell et je maintiens que le & est propre au shell.

je pense que la solution à votre problème pour gèrer vos process est de gérer les PID créer par chaque fils en les sauvegardant dans un fichier log,trace ou mémoire et vous les killez dans votre programme ou vous en sortez par une fonction qui tue le fils en cours.Normalement quand vous quittez un programme proprement il se tue de lui meme .Cela semble logique mais c'est compliqué pour moi.

Un coup de ggogle vous aidera plus que moi car je ne suis pas copain avec la programmation C

Répondre à macartur95

6

 yasminou, le 3 avr 2009 à 00:20:20

Merci commeme pour tes reponses rapides
bah d'aprés google faut que je change le handler de SIGCHLD j'ai trouvé un code prèt mais j'ai pa compris pourquoi il ont travaillé pareil,je suis en train de chercher la doc sur le remplacement des routine

thanks a lot

Répondre à yasminou
Collection CommentÇaMarche.net