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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Lancer un script shell dans un programme c

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lancer un script shell dans un programme c

n°1070681
majong
Posté le 01-09-2008 à 11:03:57  profilanswer
 

Bonjour, est-il possible d'executer un script shell dans un programme c ? Si oui peut-on aussi passer des paramettres à ce script via le code c (OS:linux) ?
Merci d'avance.

mood
Publicité
Posté le 01-09-2008 à 11:03:57  profilanswer
 

n°1070690
o'gure
Modérateur
Multi grognon de B_L
Posté le 01-09-2008 à 11:17:01  profilanswer
 

oui
oui
man exec  
http://pwet.fr/man/linux/fonctions_bibliotheques/exec


---------------
Relax. Take a deep breath !
n°1070693
majong
Posté le 01-09-2008 à 11:22:36  profilanswer
 

Merci merci, autre question
à l'execution de ce programme c, le programme attend que l'execution du script se termine pour continuer son execution ou non ?

n°1070694
wedgeant
Da penguin inside
Posté le 01-09-2008 à 11:26:42  profilanswer
 

pas nécessairement :spamafote:
tu peux forker pour faire une exécution en parallèle aussi [:mrbrelle]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°1070704
majong
Posté le 01-09-2008 à 11:35:19  profilanswer
 

Merci

n°1070707
matafan
Posté le 01-09-2008 à 11:36:59  profilanswer
 

Suivant ce que tu veux, tu peux utiliser :
- system()
- popen()
- fork()/execve()
- fork()/execve()/wait()

n°1070709
o'gure
Modérateur
Multi grognon de B_L
Posté le 01-09-2008 à 11:38:21  profilanswer
 

Un petit de lecture :
http://www.dil.univ-mrs.fr/~massat [...] hread.html
http://www.yolinux.com/TUTORIALS/L [...] reads.html
http://www.advancedlinuxprogrammin [...] p4:threads


Message édité par o'gure le 01-09-2008 à 11:38:33

---------------
Relax. Take a deep breath !
n°1070727
majong
Posté le 01-09-2008 à 11:55:20  profilanswer
 

Mon programme recoit des donnees en temps reel d'une sonde, j'utilise l'objet fork evidement dans le traitement de mes sockets. Le programme marche bien. Mais pour le traitement de la bdd on avait fait un script (exec cron 1 fois/min), aujourd'hui on voudrait que ce script s'execute à chaque fois que la sonde envoie une donnée (2 à 3 donnees/s). Est ce une bonne idée d'executer ce script (50 requetes sur une base de 4000 membres) 3 fois par seconde ? (execution obligatoire pour chaque changement)

n°1070860
majong
Posté le 01-09-2008 à 16:47:13  profilanswer
 

J'ai un probleme avec ce programme car lorsque le script est executé, vu la fréquence d'execution du programme c, un deuxieme script s'execute ce qui fait bloquer mon programme. Que dois-je faire ?

n°1070862
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 01-09-2008 à 16:54:25  profilanswer
 

ça dépend de la DB :spamafote:


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
mood
Publicité
Posté le 01-09-2008 à 16:54:25  profilanswer
 

n°1070863
majong
Posté le 01-09-2008 à 16:56:03  profilanswer
 

C'est quoi DB ? --> base de donnée (mysql)

n°1070866
majong
Posté le 01-09-2008 à 16:59:15  profilanswer
 

Est-il possible de dire au processus d'attendre que le script soit terminé.
Le mieux serait de mettre l'execution des scripts dans une file d'attente en d'autre terme le tread ou processus (script) attend chacun son tour.
C'est faisable ça ?

n°1070869
zeblods
Posté le 01-09-2008 à 17:04:33  profilanswer
 

majong a écrit :

Est-il possible de dire au processus d'attendre que le script soit terminé.
Le mieux serait de mettre l'execution des scripts dans une file d'attente en d'autre terme le tread ou processus (script) attend chacun son tour.
C'est faisable ça ?


Oui avec des sémaphores

n°1070870
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 01-09-2008 à 17:06:23  profilanswer
 

majong a écrit :

C'est quoi DB ? --> base de donnée (mysql)


 
alors linkes ton programme avec mysql, ou bien gères plus intelligemment tes accès BDD.


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°1070877
zeblods
Posté le 01-09-2008 à 17:10:02  profilanswer
 

black_lord a écrit :


 
alors linkes ton programme avec mysql, ou bien gères plus intelligemment tes accès BDD.


Ou alors essaye de passer un truc plus optimisé/rapide et qui supporte de gros trafic tel que postgresql

n°1070880
majong
Posté le 01-09-2008 à 17:14:24  profilanswer
 

Oui je crois que j'ai pas trop le choix, l'utilisation des sémaphores me dépasse.

n°1070883
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 01-09-2008 à 17:25:42  profilanswer
 

zeblods a écrit :


Ou alors essaye de passer un truc plus optimisé/rapide et qui supporte de gros trafic tel que postgresql


 
[:kiki]
 
et le coup d'après il prend une plus grosse machine ? Faut pas dire n'importe quoi non plus hein... Mysql supporte très bien des centaines d'insert/seconde...


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°1071205
franceso
Posté le 02-09-2008 à 15:00:28  profilanswer
 

black_lord a écrit :

alors linkes ton programme avec mysql, ou bien gères plus intelligemment tes accès BDD.

+1
 

black_lord a écrit :

[:kiki]
 
et le coup d'après il prend une plus grosse machine ? Faut pas dire n'importe quoi non plus hein... Mysql supporte très bien des centaines d'insert/seconde...

+1
 
Une solution intermédiaire entre le shell-script appelé plein de fois (=> pourri en perfs) et le link de mysql dans ton prog C (=> très performant mais pas forcément simple) pourrait être de continuer à utiliser un script externe (genre en perl ou python) pour gérer tes insertions, mais sans respawner un nouveau process à chaque fois.
 
Genre ton programme principal forke au départ et recouvre son fils avec un script perl. Ensuite, les deux processus communiquent par pipes ou sockets pour se transmettre les données provenant de la BDD.
 
De toutes façons, pour traiter quelques requetes par secondes, pas besoin d'une usine à gaz...


---------------
TriScale innov
n°1071224
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 02-09-2008 à 16:16:00  profilanswer
 

[:romf]


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Lancer un script shell dans un programme c

 

Sujets relatifs
Laisser un programme tourner quand on ferme la console (remote ssh)script shell sftp - vérification dépose fichier
mac script selon source d'alimentationCreer des fils, des sous shell pour acceler script
Erreur de segmentation sur script bashAspire one ne veut plus me lancer msn ...(sous linpus linux )
Argument dans un script 
Plus de sujets relatifs à : Lancer un script shell dans un programme c


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