rendre un processus insensible à l'interruption du parent

Le
Manuel Pégourié-Gonnard
Bonjour,

Imaginons que depuis un shell je lance un programme (mettons vim),
depuis lequel j'en lance un autre (mettons xpdf) en arrière-plan (& en
fin de ligne de commande). Depuis vim, je fais un petit Ctrl-Z pour
aller bidouiller dans mon shell de départ, et revenir à vim avec tous
mes buffers et mes fenêtres ouvertes par un simple 'fg'.

Mon souci est que lorsque vim est suspendu par Ctrl-Z, xpdf l'est
aussi, alors que je préférerais qu'il ne le soit pas. J'imagine que la
solution tient à la façon de lancer xpdf depuis vim. J'ai essayé de le
faire déposséder par le shell qui sert à le lancer (un zsh) en faisant

nohup xpdf file.pdf &|

mais sans succès. Toute piste est la bienvenue.

--
Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu
http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas George
Le #19807431
Manuel Pégourié-Gonnard wrote in message
Mon souci est que lorsque vim est suspendu par Ctrl-Z, xpdf l'est
aussi, alors que je préférerais qu'il ne le soit pas. J'imagine que la
solution tient à la façon de lancer xpdf depuis vim. J'ai essayé de le
faire déposséder par le shell qui sert à le lancer (un zsh) en faisant

nohup xpdf file.pdf &|



nohup ne sert essentiellement à rien, c'est une commande à oublier.

Idéalement, il faudrait créer un nouveau groupe de process. À défaut, dans
le cas présent, créer une nouvelle session convient parfaitement, ce qui
peut se faire avec l'appel système setsid. Sur les bons systèmes, il y a une
commande correspondante, setsid par exemple.
Manuel Pégourié-Gonnard
Le #19808321
Nicolas George scripsit:

Manuel Pégourié-Gonnard wrote in message
Mon souci est que lorsque vim est suspendu par Ctrl-Z, xpdf l'est
aussi, alors que je préférerais qu'il ne le soit pas. J'imagine que la
solution tient à la façon de lancer xpdf depuis vim. J'ai essayé de le
faire déposséder par le shell qui sert à le lancer (un zsh) en faisant

nohup xpdf file.pdf &|



nohup ne sert essentiellement à rien, c'est une commande à oublier.



Ok. Il me semble que j'en avais eu besoin à un moment pour pouvoir
fermer ma session shell (zsh) sans pour autant tuer les processus lancés
depuis ce shell.

Enfin dans ce cas, je dois avouer l'avoir mis là un peu au hasard.

Idéalement, il faudrait créer un nouveau groupe de process. À défaut, dans
le cas présent, créer une nouvelle session convient parfaitement, ce qui
peut se faire avec l'appel système setsid. Sur les bons systèmes, il y a une
commande correspondante, setsid par exemple.



En effet, j'ai un /usr/bin/setsid dont l'utilisation résoud le problème.
Merci !

Pour comprendre un peu mieux la gestion des processus sous Unix (par
exemple les notions de session et de groupe de processus), que
puis-je lire (si possible librement disponible) ?

--
Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu
http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/
Stephane CHAZELAS
Le #19809481
2009-07-22, 17:57(+02), Manuel Pégourié-Gonnard:
[...]
Pour comprendre un peu mieux la gestion des processus sous Unix (par
exemple les notions de session et de groupe de processus), que
puis-je lire (si possible librement disponible) ?



info libc 'job control'

sur un systeme GNU.

--
Stéphane
NicolasAlex.Michel.remove
Le #19811401
Manuel Pégourié-Gonnard
Ok. Il me semble que j'en avais eu besoin à un moment pour pouvoir
fermer ma session shell (zsh) sans pour autant tuer les processus lancés
depuis ce shell.



Dans un cas comme ça, perso j'utilise screen.

Avec l'avantage de pouvoir reprendre la main le landemain pour consulter
les éventuels messages d'erreur.

--
Nicolas Michel
Lucas Levrel
Le #19813811
Le 22 juillet 2009, Stephane CHAZELAS a écrit :

info libc 'job control'

sur un systeme GNU.



Qu'on peut trouver en PDF (entre autres) là :
http://www.gnu.org/software/libc/manual/

--
LL
yamo'
Le #19827991
Salut,

Nicolas Michel a tapoté, le 23/07/2009 08:49 :
Dans un cas comme ça, perso j'utilise screen.




J'utilise beaucoup screen mais j'ai découvert récemment nohup sur un
serveur CentOS 4 qui tenait à tout prix à associer le processus tomcat à
ma session ouverte avec Putty et screen dans ce cas là ne voulait pas
fonctionner ou alors je n'avais pas la bonne option et un simple & était
inefficace.

Il y a peut-être un moyen simple pour détacher d'une session/processus
père (je ne sais pas si le terme est approprié) un processus existant?


--
Stéphane
http://pasdenom.info/fortune/
Nicolas George
Le #19828131
yamo' wrote in message
J'utilise beaucoup screen mais j'ai découvert récemment nohup sur un
serveur CentOS 4 qui tenait à tout prix à associer le processus tomcat à
ma session ouverte avec Putty et screen dans ce cas là ne voulait pas
fonctionner ou alors je n'avais pas la bonne option et un simple & était
inefficace.

Il y a peut-être un moyen simple pour détacher d'une session/processus
père (je ne sais pas si le terme est approprié) un processus existant?



nuhup ne détache pas le processus. La bonne commande pour détacher, c'est
setsid. Il faut également penser à rediriger les entrées-sorties,
évidemment.
Publicité
Poster une réponse
Anonyme