Je me suis aperçu que mon problème ne venait pas du code en lui même, mais de la manière dont il est lancé. Je suis sous Openbox, la configuration des applications passe par ~/.config/openbox/autostart.
Pour lancer mon programme, je passe par exec :
(exec ~/documents/gnu/bash/dzen2/dzen2.sh &)
Avec cette méthode, les sous processus du script ne sont pas apparenté au script lui même. Quand le programme se termine, ils ne sont pas tués dans la foulée.
Il se passe la même chose si je remplace la ligne ci-dessous par une de celle là:
(exec ~/documents/gnu/bash/dzen2/dzen2.sh &) (exec ~/documents/gnu/bash/dzen2/dzen2.sh ) & (bash ~/documents/gnu/bash/dzen2/dzen2.sh &) (bash ~/documents/gnu/bash/dzen2/dzen2.sh ) &
Par contre ça se lance correctement si je fais :
(urxvt -e ~/documents/gnu/bash/dzen2/dzen2.sh)
Le seul soucis c’est que je me retrouve avec une jolie fenêtre urxvt qui ne peut pas se fermer, sous peine de ferme le programme avec.