bonsoir,
j ai un petit probleme:
je tente de faire un programme qui reproduit les backquote du
shell. ex: echo `pwd`
Celui ci marche tres bien quand le programme forke n'utilise pas
d'interface (termcaps, ncurses...).
Par contre des que celui ci utilise une interface (comme pine)
il recoit automatique un SIGHUP. Je ne sais absolument pas la
raison de ce signal.
En gros je fork un proc , je cree un nouvau groupe pour ce
process, et l'execute. Pendant ce temps dans le pere je fais un
read bloquant sur le pipe que j ai precedement ouvert et ou le
proccess ecrit(j ai effectue un dup2).
J ai essaye d attacher le pgid du process au tty (foreground):
celui lance l interface mais plus moyen de ne rien faire.
Merci d'avance pour vos reponses.
ps: j ai cross-post sur os.unix ne sachant pas lequel des deux
etait le plus approprie
--
Nico
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jacques Caron
Salut,
On Mon, 7 Jun 2004 21:42:54 +0200, nico wrote:
je tente de faire un programme qui reproduit les backquote du shell. ex: echo `pwd` Celui ci marche tres bien quand le programme forke n'utilise pas d'interface (termcaps, ncurses...).
On sort un peu du simple backquote...
Par contre des que celui ci utilise une interface (comme pine) il recoit automatique un SIGHUP. Je ne sais absolument pas la raison de ce signal. En gros je fork un proc , je cree un nouvau groupe pour ce process, et l'execute. Pendant ce temps dans le pere je fais un read bloquant sur le pipe que j ai precedement ouvert et ou le proccess ecrit(j ai effectue un dup2).
Et stdin, il lui arrive quoi? S'il est fermé ça risque de pas lui plaire... Un autre pipe pourrait être utile, même si on n'écrit jamais rien dessus, juste histoire que le processus lancé puisse faire des choses dessus (les opérations sur le terminal se font sur stdin en général). Evidemment, s'il cherche vraiment, il va se prendre plein d'erreurs en essayant, et dans ce cas il faut utiliser un pty qui va vraiment lui faire croire qu'il parle à un terminal alors que c'est un autre process qui récupère tout ça (c'est comme ça que telnet, ssh & co fonctionnent). Cf man pty, man 4 pty.
Jacques. -- Interactive Media Factory Création, développement et hébergement de services interactifs: SMS, SMS+, Audiotel... http://www.imfeurope.com/
Salut,
On Mon, 7 Jun 2004 21:42:54 +0200, nico <nico@spam.fr> wrote:
je tente de faire un programme qui reproduit les backquote du
shell. ex: echo `pwd`
Celui ci marche tres bien quand le programme forke n'utilise pas
d'interface (termcaps, ncurses...).
On sort un peu du simple backquote...
Par contre des que celui ci utilise une interface (comme pine)
il recoit automatique un SIGHUP. Je ne sais absolument pas la
raison de ce signal.
En gros je fork un proc , je cree un nouvau groupe pour ce
process, et l'execute. Pendant ce temps dans le pere je fais un
read bloquant sur le pipe que j ai precedement ouvert et ou le
proccess ecrit(j ai effectue un dup2).
Et stdin, il lui arrive quoi? S'il est fermé ça risque de pas lui
plaire... Un autre pipe pourrait être utile, même si on n'écrit jamais
rien dessus, juste histoire que le processus lancé puisse faire des choses
dessus (les opérations sur le terminal se font sur stdin en général).
Evidemment, s'il cherche vraiment, il va se prendre plein d'erreurs en
essayant, et dans ce cas il faut utiliser un pty qui va vraiment lui faire
croire qu'il parle à un terminal alors que c'est un autre process qui
récupère tout ça (c'est comme ça que telnet, ssh & co fonctionnent). Cf
man pty, man 4 pty.
Jacques.
--
Interactive Media Factory
Création, développement et hébergement
de services interactifs: SMS, SMS+, Audiotel...
http://www.imfeurope.com/
je tente de faire un programme qui reproduit les backquote du shell. ex: echo `pwd` Celui ci marche tres bien quand le programme forke n'utilise pas d'interface (termcaps, ncurses...).
On sort un peu du simple backquote...
Par contre des que celui ci utilise une interface (comme pine) il recoit automatique un SIGHUP. Je ne sais absolument pas la raison de ce signal. En gros je fork un proc , je cree un nouvau groupe pour ce process, et l'execute. Pendant ce temps dans le pere je fais un read bloquant sur le pipe que j ai precedement ouvert et ou le proccess ecrit(j ai effectue un dup2).
Et stdin, il lui arrive quoi? S'il est fermé ça risque de pas lui plaire... Un autre pipe pourrait être utile, même si on n'écrit jamais rien dessus, juste histoire que le processus lancé puisse faire des choses dessus (les opérations sur le terminal se font sur stdin en général). Evidemment, s'il cherche vraiment, il va se prendre plein d'erreurs en essayant, et dans ce cas il faut utiliser un pty qui va vraiment lui faire croire qu'il parle à un terminal alors que c'est un autre process qui récupère tout ça (c'est comme ça que telnet, ssh & co fonctionnent). Cf man pty, man 4 pty.
Jacques. -- Interactive Media Factory Création, développement et hébergement de services interactifs: SMS, SMS+, Audiotel... http://www.imfeurope.com/
nico
On Mon, 07 Jun 2004 22:57:09 +0200 Jacques Caron wrote:
Et stdin, il lui arrive quoi? S'il est fermé ça risque de pas lui [...]
Jacques. -- Interactive Media Factory Création, développement et hébergement de services interactifs: SMS, SMS+, Audiotel... http://www.imfeurope.com/
merci pour cette reponse complete je vais tester ca.
-- Nico
On Mon, 07 Jun 2004 22:57:09 +0200
Jacques Caron <jc@imfeurope.com> wrote:
Et stdin, il lui arrive quoi? S'il est fermé ça risque de pas
lui
[...]
Jacques.
--
Interactive Media Factory
Création, développement et hébergement
de services interactifs: SMS, SMS+, Audiotel...
http://www.imfeurope.com/
merci pour cette reponse complete je vais tester ca.