appel à la fonction system() et quote

appel à la fonction system() et quote - Linux et OS Alternatifs

Marsh Posté le 05-06-2005 à 18:33:20    

Bonjour,
 
J'ai un soucis concerant l'utilisation de la pimitive system() en C sous linux.
 
j'aimerais exécuter la commande suivante : cat /proc/loadavg | cut -f1 -d" " ou cat /proc/loadavg | cut -f1 -d\ .
Le problème est qu'à cause des " ou du \, cela ne passe pas l'appel à system().
 
Auriez-vous une idée ?
Merci d'avance.


---------------
-@- When code matters more than commercials -@-
Reply

Marsh Posté le 05-06-2005 à 18:33:20   

Reply

Marsh Posté le 05-06-2005 à 18:34:53    

\" pour les " et \\ pour les \

Reply

Marsh Posté le 05-06-2005 à 18:36:29    

j'y avais bien pensé, mais cela ne marche pas.


---------------
-@- When code matters more than commercials -@-
Reply

Marsh Posté le 05-06-2005 à 18:41:04    

Ca marche pour moi... tu as quoi comme erreur ??


 system("/bin/cat /proc/loadavg | /usr/bin/cut -f1 -d\" \"" );

Reply

Marsh Posté le 05-06-2005 à 18:42:31    

code:

Code :
  1. int
  2. main (argc, argv)
  3.      int argc;
  4.      char **argv;
  5. {
  6.   system("/bin/cat /proc/loadavg | /usr/bin/cut -f1 -d\" \"" );
  7.   exit (0);
  8. }


 
résultat:

\_{src} ./test  
0.26


Message édité par l0ky le 05-06-2005 à 18:42:45
Reply

Marsh Posté le 05-06-2005 à 18:46:41    

Bon, en fait j'ai dit que j'utilisais system() pour simplifier mais en fait j'utilise g_spawn_command_line_sync de la glib. Cela permet de récupérer le résultat de sortie sans se faire chier avec system et fork/exec.
 
Donc j'ai ça :  

Code :
  1. g_spawn_command_line_sync("cat /proc/loadavg | cut -f1 -d\" \"",&standard_output,NULL,NULL,error);


 
Et à l'exécution j'ai l'erreur :
(process:31829): GLib-CRITICAL **: unquote_string_inplace: assertion `err == NULL || *err == NULL' failed
 
et j'ai de la purée à l'afichage.


---------------
-@- When code matters more than commercials -@-
Reply

Marsh Posté le 05-06-2005 à 18:48:51    

Effectivement avec system ça marche, bon ben je vais me faire chier avec ça alors :/


---------------
-@- When code matters more than commercials -@-
Reply

Sujets relatifs:

Leave a Replay

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