[C-UNIX] Recuperer le command name a partir du PID

Recuperer le command name a partir du PID [C-UNIX] - C++ - Programmation

Marsh Posté le 23-11-2002 à 20:08:46    

Y a t il une fonction qui permettrait de recuperer le nom du programme a partir du PID de celui ci du genre :
 

Code :
  1. void get_pid_name(int PID);


 
voila sinon si ca existe po j ai penser a executer la commande ps
la parser jusk a trouver le PID et ensuite enregistrer le nom du programme dans un char *
 
mais bon c un peut gorrer ya plus simple chuis sur :/


---------------
Je décline toute responsabilité potentielle pour le contenu de mes propos et contenu multimedia (images, videos et sons) + miroir magic.
Reply

Marsh Posté le 23-11-2002 à 20:08:46   

Reply

Marsh Posté le 23-11-2002 à 20:38:03    

bon j crois que c pas possible l autre solution est de mettre un pause qui attend un signal et de mettre un timer sur ce pause.
 
ya une fonction qui est setitimer je pense que ca va m aider


---------------
Je décline toute responsabilité potentielle pour le contenu de mes propos et contenu multimedia (images, videos et sons) + miroir magic.
Reply

Marsh Posté le 23-11-2002 à 21:14:29    

Gugus2000 a écrit a écrit :

bon j crois que c pas possible l autre solution est de mettre un pause qui attend un signal et de mettre un timer sur ce pause.
 
ya une fonction qui est setitimer je pense que ca va m aider




 
je vois po le rapport avec ton ta question initiale?
d'ailleurs tu as besoin du nom du programme pour faire quoi?


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 23-11-2002 à 21:51:07    

j ai codé un serveur et un client
 
 
je lance le serveur il me dit son PID
 
le client je le lance de cette facon :
./client [PID DU SERVEUR] "ma phrase"
 
 
je voudrais faire en sorte que si on se trompe sur le PID que le client retourne un message d erreur
 
le mien attend une reponse duserveur qu il n aura jamais si le PID est faux


---------------
Je décline toute responsabilité potentielle pour le contenu de mes propos et contenu multimedia (images, videos et sons) + miroir magic.
Reply

Marsh Posté le 23-11-2002 à 21:56:14    

ebn vu que tu travailles sur le meme PC, pourquoi ne pas utilisé un fichier pour echanger ces informations? le serveur y ecrit ou il est et d'autres infos, et les clients analyse ce fichier: ca me aprait le plus simple
 
parce que donner un pid...  :sarcastic:  
 
ou alors mets un timeout ou definit un petit protocole server/client: le server doit repondre au client pour lui confirmer sa conexxion (d'ou ton idée du signal)


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 23-11-2002 à 22:31:32    

sur solaris il y a une commande pwdx qui prends en paramètre un pid. Elle retourne le path de lancement du prog.
 
Mais rien de POSIX n'existe je pense.


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 24-11-2002 à 12:29:09    

Taz@PPC a écrit a écrit :

ebn vu que tu travailles sur le meme PC, pourquoi ne pas utilisé un fichier pour echanger ces informations? le serveur y ecrit ou il est et d'autres infos, et les clients analyse ce fichier: ca me aprait le plus simple
 
parce que donner un pid...  :sarcastic:  
 
ou alors mets un timeout ou definit un petit protocole server/client: le server doit repondre au client pour lui confirmer sa conexxion (d'ou ton idée du signal)




 
comme c trop pas con ta premiere id [:xp1700]


---------------
Je décline toute responsabilité potentielle pour le contenu de mes propos et contenu multimedia (images, videos et sons) + miroir magic.
Reply

Marsh Posté le 24-11-2002 à 16:48:27    

le problème d'associer un PID au nom du programme est pas tres utile car si un programme est lancé plusieur sfois (plusieurs processus), on si retrouve plus.
 
faut donc se fier qu'au PID
 
tiens moi au courant de quelle solution tu adoptes  ;)


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 24-11-2002 à 20:45:41    

j ai pas encore gerer ca mais ton idee ma permis de gerer plusieurs client :)
 
 
lorsque je lance un client je lock un fichier je balance mais infos au serveur et je quitte
 
si un autre client est lancé pendant que l autre envois des infos et bien il tourne en boucle jusk a ce qu il puisse a son tour locker le fichier.
 
Ca marche en tous cas :)
 


---------------
Je décline toute responsabilité potentielle pour le contenu de mes propos et contenu multimedia (images, videos et sons) + miroir magic.
Reply

Marsh Posté le 24-11-2002 à 20:47:03    

:jap:


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 24-11-2002 à 20:47:03   

Reply

Marsh Posté le 24-11-2002 à 20:56:35    

on nous demande :
   - gestion des erreurs de transmission et reemission
 
 
moi quand mon client envois un char mon serveur lui repond j ai recu qqch tu peux continuer a m envoyer ton signal.
 
 
est ce consideré comme une gestion d erreurs de transmission et reemission ? je pense pas :/
 
 
je comprend pas trop comment faire ca
 
 
 
j vais ptet expliquer le sujet ca aidera pour comprendre ca :
 
un serveur et un client ds deux term different
 
le serveur s execute et affiche son pid
on lance le client de la maniere suivante :
client [PID DU SERVEUR] "une chaine str"
 
La communication entre le client et le serveur doit se faire uniquement par signaux (perso j utilise SIGUSR1 pour le 1 et SIGUSR2 pour le 0).
 
ma methode :  
envoyer le PID du client au serveur
transformer ma chaine en un code binaire
envoyer un bit et attendre un signal du serveur pour qu il me dise j ai bien recu ton bit
renvoyer un autre bit etc ...
Quand il a 8bits afficher le char
une fois que la chaine est fini mon client envois un \n
 
voila


---------------
Je décline toute responsabilité potentielle pour le contenu de mes propos et contenu multimedia (images, videos et sons) + miroir magic.
Reply

Marsh Posté le 24-11-2002 à 20:59:43    

pas de pipe? putain c'est vraiment pour faire chier
 
 
perso j utilise SIGUSR1 pour le 1 et SIGUSR2 pour le 0
 
tu peux passer ta chaine à la moulinette d'un cheksum et l'envoyer egalement afin de vérifier l'autenticité des données recues


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 24-11-2002 à 21:01:56    

Pour avoir le nom d'un process tu peux toujours aller lire les fichiers sous /proc.

Reply

Marsh Posté le 24-11-2002 à 21:03:14    

Taz@PPC a écrit a écrit :

pas de pipe? putain c'est vraiment pour faire chier
 
 
perso j utilise SIGUSR1 pour le 1 et SIGUSR2 pour le 0
 
tu peux passer ta chaine à la moulinette d'un cheksum et l'envoyer egalement afin de vérifier l'autenticité des données recues




 
 :jap:  
 
ca va rallonger le tps d execution :/
 
la je suis a 1.69s pour 1024chars et faut pas depasser 2s
 [:alph-one]


---------------
Je décline toute responsabilité potentielle pour le contenu de mes propos et contenu multimedia (images, videos et sons) + miroir magic.
Reply

Marsh Posté le 24-11-2002 à 21:03:55    

Matafan a écrit a écrit :

Pour avoir le nom d'un process tu peux toujours aller lire les fichiers sous /proc.




 
oué mais ca c en shell moi je cherchais en C-UNIX et puis il fo etre root pour aller la dedant je le suis pas sur la machine :D


---------------
Je décline toute responsabilité potentielle pour le contenu de mes propos et contenu multimedia (images, videos et sons) + miroir magic.
Reply

Marsh Posté le 24-11-2002 à 21:08:16    

Sous Linux, tu peux aller voir dans /proc/<pid>/cmdline il me semble. Mais je n'ai aucune idée de ce qu'il faut pour avoir ça ou même si c'est standard :D

Reply

Marsh Posté le 24-11-2002 à 21:10:04    

Gugus2000 a écrit a écrit :

 
 
 :jap:  
 
ca va rallonger le tps d execution :/
 
la je suis a 1.69s pour 1024chars et faut pas depasser 2s
 [:alph-one]




 
3 fois rien, c'est moins couteux que de confirmer apres chaque bit. jete quand meme un cout d'oeil a crypt.
 
sinon tu peux implémener toi meme un petit controle de parité ou Hamming pour chaque packet de bit émis


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 24-11-2002 à 21:11:45    

Taz@PPC a écrit a écrit :

 
 
3 fois rien, c'est moins couteux que de confirmer apres chaque bit. jete quand meme un cout d'oeil a crypt.
 
sinon tu peux implémener toi meme un petit controle de parité ou Hamming pour chaque packet de bit émis




 
je suis obligé de recoder le machin
mais bon je vaus le faire a l arrache clairement :D


---------------
Je décline toute responsabilité potentielle pour le contenu de mes propos et contenu multimedia (images, videos et sons) + miroir magic.
Reply

Marsh Posté le 24-11-2002 à 21:13:02    

Gugus2000 a écrit a écrit :

 
 
je suis obligé de recoder le machin
mais bon je vaus le faire a l arrache clairement :D




 
recoder quoi? ton programme? ca va surtout consister a virer les lignes


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 24-11-2002 à 21:18:47    

Taz@PPC a écrit a écrit :

 
 
recoder quoi? ton programme? ca va surtout consister a virer les lignes




 
bah si je vire la reponse du serveur les signaux vont arriver trop vite ca va toujours etre erronnes.
si je met un usleep(0) bah beaucoup beaucoup trop lent du genre 60s pour 1024 chars  :ouch:  
 
 
du coup je suis obligé de foutre une boucle ds mon programme pour que tous les 8 bits j aille ds une autre fonction qui va recevoir le checksum et le comparer au sien et non pas l afficher :)


---------------
Je décline toute responsabilité potentielle pour le contenu de mes propos et contenu multimedia (images, videos et sons) + miroir magic.
Reply

Marsh Posté le 24-11-2002 à 21:21:07    

Gugus2000 a écrit a écrit :

 
 
bah si je vire la reponse du serveur les signaux vont arriver trop vite ca va toujours etre erronnes.
si je met un usleep(0) bah beaucoup beaucoup trop lent du genre 60s pour 1024 chars  :ouch:  
 
 
du coup je suis obligé de foutre une boucle ds mon programme pour que tous les 8 bits j aille ds une autre fonction qui va recevoir le checksum et le comparer au sien et non pas l afficher :)




 
 
 
regarde tu coté des signaux temps réel et de sigqueue


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed