wake-up-neo.com

C: Systembefehl ausführen und Ausgabe abrufen?

Mögliches Duplikat:
Wie kann ich ein externes Programm von C aus ausführen und dessen Ausgabe analysieren?

Ich möchte einen Befehl unter Linux ausführen und den von ihm ausgegebenen Text zurückgeben, aber ich möchte nicht, dass dieser Text auf dem Bildschirm gedruckt wird . Gibt es einen eleganteren Weg als eine temporäre Datei zu erstellen?

125
jimi hendrix

Sie möchten die Funktion " popen ". Hier ist ein Beispiel für die Ausführung des Befehls "ls/etc" und die Ausgabe an die Konsole.

#include <stdio.h>
#include <stdlib.h>


int main( int argc, char *argv[] )
{

  FILE *fp;
  char path[1035];

  /* Open the command for reading. */
  fp = popen("/bin/ls /etc/", "r");
  if (fp == NULL) {
    printf("Failed to run command\n" );
    exit(1);
  }

  /* Read the output a line at a time - output it. */
  while (fgets(path, sizeof(path)-1, fp) != NULL) {
    printf("%s", path);
  }

  /* close */
  pclose(fp);

  return 0;
}
229
user14038

Sie benötigen eine Art Inter-Process-Kommunikation. Verwenden Sie ein Pipe oder einen gemeinsam genutzten Puffer.

4
dirkgently