c++ Program ruft externes Program

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
ZzLeCzZ
Beiträge: 245
Registriert: 15.12.2003 19:34:00

c++ Program ruft externes Program

Beitrag von ZzLeCzZ » 12.10.2005 12:00:02

Hi,
ich moechte von meinem c++ Program ein exterenes Program starten und den output dann weiterverarbeiten. Also z.B. ein shell-script starten ( am besten in einem eigen thread) oder mit grep eine zeile aus einer datei auslesen. Wie geht das? Kennt einer einen guten link?
thx

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 12.10.2005 12:18:58

hi,

also in C geht's ganz einfach:

Code: Alles auswählen

  FILE  *greppipe;
  char  zeile[88];

  greppipe = popen ("/bin/grep 'ZzLeCzZ' /etc/passwd", "r");
  if (greppipe) {
    fgets (zeile, sizeof(zeile), greppipe);
    // hier koennte Ihre Werbung stehen
    pclose (greppipe);
  }
Beware of programmers who carry screwdrivers.

ZzLeCzZ
Beiträge: 245
Registriert: 15.12.2003 19:34:00

Beitrag von ZzLeCzZ » 12.10.2005 13:48:10

ja cool danke das ist genau das was ich brauche!

zum verstaendniss: das FILE ist jetzt keine richtige Datei sondern nur im ein Object im Speicher? oder wie funktioniert das genau?

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 12.10.2005 14:28:44

ZzLeCzZ hat geschrieben:zum verstaendniss: das FILE ist jetzt keine richtige Datei sondern nur im ein Object im Speicher? oder wie funktioniert das genau?
Das ist eine "pipe" und die ist nur im Speicher; die Datei, die grep durchsucht,
ist wahrscheinlich eine richtige Datei ;)
Es gibt auch "named pipes" auf der Platte, aber die kommen hier nicht ins Spiel.
Wenn's aber um Systemlast geht, muss man bedenken, dass popen eine Shell
startet die dann wiederum das grep ausfuehrt.
Beware of programmers who carry screwdrivers.

ZzLeCzZ
Beiträge: 245
Registriert: 15.12.2003 19:34:00

Beitrag von ZzLeCzZ » 23.10.2005 18:48:31

hi ich hab jetzt folgendes problem ich möchte einen Befehl von meinem Program aufrufen der noch mit ja bestätigt werden muss.. wie kann ich auf die shell zugreifen und das "y" übergeben?
thx

Antworten