2016-03-22 4 views
1

Ich bin mit „System“ API-Aufrufe Shell-Befehle in meinem C-Programm laufen, jetzt gibt es Fall, wo ich durch einen executableto einen Puffer anstelle einer Datei, um die erzeugte Ausgabe umleiten möge (mit dem Namen recv.mail)Es ist möglich, Datei zu Puffer zu ersetzen, während Eingabe als Shell-Befehl an eine EXE übergeben?

ein Beispiel dafür, wie ich die Ausgabe in die Datei schreiben:

cmd[] = "mda "/bin/sh -c 'cat > recv.mail'"; 
system (cmd); 

Ebenso mag ich Eingabe aus der Datei (SEND.MAIL) mit Eingang von einem Puffer genommen genommen ersetzen.

Ein Beispiel, wie ich nehme Eingabe aus einer Datei:

cmd[] = "msmtp < cat send.mail"; 
system (cmd); 

HINWEIS: Die send.mail und recv.mail Dateien Daten formatiert haben.

Sind Rohre ein besserer Ersatz? Kann jemand eine andere Alternative vorschlagen?

+0

Ihre "nehmen Eingabe aus der Datei" Beispiel liest aus einer Datei genannt "Katze"; Ich glaube nicht, dass du das meintest. –

Antwort

2
  1. popen/pclose können tun, was Sie wollen:

    FILE *f = popen("program to execute", "r"); 
    if (NULL != f) 
    { 
        char buffer[128]; 
        while (fgets(buffer, sizeof buffer, f) 
        { 
         printf("Read from program: '%s'\n", buffer); 
        } 
        pclose (f); 
    } 
    
  2. popen/pclose wieder:

    FILE *f = popen("program to execute", "w"); 
    ... 
    
Verwandte Themen