Fragen zu popen

Post Reply
Message
Author
eq

Fragen zu popen

#1 Post by eq »

hiho .. ich habe mal zwei Beispiele:


int main()
{

FILE *fp;
char status[256];

fp = popen("whoami", "r");
fscanf(fp, "%s", status);
printf("Ausgabe= %s

", status);
return 0;
}

und


int main()
{

FILE *fp;
char status[256];

fp = popen("/usr/sbin/adsl-start", "r");
fscanf(fp, "%s", status);
printf("Ausgabe= %s

", status);
return 0;
}

Jetzt meine Frage: wenn die Ausgabe direkt von "whoami" erzeugt werde, dann kann ich dir Ausgabe auch weiterverarbeiten ... im Falle vom script adsl-start scheint das nicht der Fall zu sein - ich nehme an, die Ausgaben werden nicht vom script selbst erzeugt.
Wie kann ich die komplette ausgabe eines Shellscriptes (oder seiner Aufrufe) in meinem C-Programm weiterbehandeln ???
Ich brauche für ein DSL-Kontrollprogramm die Ausgabe, damit ich den Erfolg oder Mißerfolg des Einloggens dem User weitergeben kann ...


Ich danke euch schon mal für eure Hilfe

Udo Kanter

Re: Fragen zu popen

#2 Post by Udo Kanter »

Warum nicht einfach von stdin lesen?

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#include <stdio.h>

int main()
{
char buffer[1024];
int i=0;
while( fgets( buffer, sizeof(buffer)-1, stdin ) ) {
printf( "%03i - %s", i++, buffer );
}
}
</font><hr></pre></blockquote>

eq

Re: Fragen zu popen

#3 Post by eq »

hmm .. wie baue ich das so ein, dass mein Beispiel funkioniert ?

Danke

Udo Kanter

Re: Fragen zu popen

#4 Post by Udo Kanter »

Einfach mein Beispiel als xyz.c abspeichern und compilieren, z.B. gcc -o xyz xyz. Dann mal von

cat /etc/passwd | ./xyz

die Bildschirmausgabe anschauen.
Du muesstes in der Zeile ansetzen, in der ich

printf( "%03i - %s", i++, buffer );

stehen habe.

eq

Re: Fragen zu popen

#5 Post by eq »

danke .. habs schon <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">

Post Reply