Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2430 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C linux] Envoyer une sequence clavier a un procesus

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C linux] Envoyer une sequence clavier a un procesus

n°991157
grums
Posté le 23-02-2005 à 13:57:28  profilanswer
 

Je cherche a simuler l'entrée clavier ou une sequence de touches pour communiquer avec un processus.
 
Ex: simuler la touche "x" à XMMS pour lancer la lecture.
 
Mon application possède déjà le pid du processus avec lequel je veux communiquer, je sais lui envoyer un signal a l'aide de la procedure "kill" mais je ne sais pas lui envoyer une sequence de touches.
 
Merci.

mood
Publicité
Posté le 23-02-2005 à 13:57:28  profilanswer
 

n°991534
moi23372
Posté le 23-02-2005 à 16:56:33  profilanswer
 

pour lui envoyé des données, tu as plusieurs possibilités
 
- les filles de messages
- les mémoires partagées
- les sémaphores
- le réseau

n°992027
western
AJMM
Posté le 24-02-2005 à 08:58:44  profilanswer
 

2 possibilités:
1) le process auquel tu veux envoyer les commandes est externe  à ton programme: la solution que je vois consiste à rediriger l'entrée standard du programme dans un tube nommé (man 1 mkfifo). Exemple:
$ mkfifo /tmp/comm_with_xmms.fifo
$ xmms < /tmp/comm_with_xmms.fifo &
$ mon_programme /tmp/comm_with_xmms.fifo  
 
mon_programme ouvre le fifo /tmp/comm_with_xmms.fifo en écriture et y balance les commandes
 
2) mon_programme  lance un fils (suite à un fork, pthread, etc.) le père balance les commandes par un moyen de comm... le fils redirige (man 2 dup ou man 2 dup2) son entrée standard depuis le moyen de comm et lance le programme  
 
 
 
 
Dernier point: en théorie, au lancement d'un processus, le système alloue au processus 3 flux: stdin, stdout, stderr... En connaissant le pid du processes, tu dois pouvoir retrouver les flux associés au pid... Mais je ne sais pas comment (fouiller dans /proc?) et si c'est vraiment possible...
Bonne courage

n°992036
western
AJMM
Posté le 24-02-2005 à 09:16:37  profilanswer
 

moi23372 a écrit :

pour lui envoyé des données, tu as plusieurs possibilités
 
- les filles de messages
- les mémoires partagées
- les sémaphores
- le réseau


Filles? tu voulais dire files ou pipes ou tubes?
Sémaphones ne permettent pas la communication, ces sont les mecanismes de synchronisation... la mémoire partagée+un sémaphore peut être utilisé comme un mécanisme de communication...
Réseaux? tu veux surement parler des sockets?

n°992597
moi23372
Posté le 24-02-2005 à 16:47:22  profilanswer
 

oui bien sure files de messages... Une file de message n'est pas un pipe(tube). c'est vraiment qu'on pourrait utilisé un pipe dans ce cas-ci...
 
en réfléchissant bien, le crois que la solution avec les pipes et le redirection est peut être une bonne solution pour cela...
 
oui pour utilisés le sémaphore, c'est bien sure obligé d'utilisé la shared memory...
 
sinon pour le réseau, les sockets ;-)

n°993045
totalchuck
Posté le 24-02-2005 à 22:50:51  profilanswer
 

Moi aussi je suis interré par ceci, mais j'ai longement esseyé
et je n'y arrive pas, j'y vais à cout de fork, pipe, open, write ...
mais j'ai aucun résultat.
Je cherche un exemple très simple qui lance un editeur de texte (emacs
par exemple) et qui après un petit sleep ecrit dedans par communication à travers
une file de message.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C linux] Envoyer une sequence clavier a un procesus

 

Sujets relatifs
Problème compilation sur LinuxComment installer un compilateur Java sous LINUX ?
Port série, Linux & Utilisation non-standardComment envoyer des mails sous vb via outlook 2003
Envoyer e-mail[VB6] : bloquez le clavier et la souris
[PHP] Connexion linux à db2(AS400) via phpPHP + crystal report + linux ?
[résolu] Portage Windows Linux: apparition de warnings[JDBC] problème sous linux (et pas sous windows...)
Plus de sujets relatifs à : [C linux] Envoyer une sequence clavier a un procesus


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR