Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

rendre un processus insensible à l'interruption du parent

7 réponses
Avatar
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/

7 réponses

Avatar
Nicolas George
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.
Avatar
Manuel Pégourié-Gonnard
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/
Avatar
Stephane CHAZELAS
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
Avatar
NicolasAlex.Michel.remove
Manuel Pégourié-Gonnard <mpg+ wrote:

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
Avatar
Lucas Levrel
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
Avatar
yamo'
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/
Avatar
Nicolas George
yamo' wrote in message <4a6acc68$:
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.