mithras
21-08-2002, 13:14
Hi,
ich will über pipes die Ausgabe eines systemsbefehl in C, also z.B. system(ls -l) in eine array in dem ausführenden programm speichern. Habe bereits ein Tut (www.pronix.de) dazu gelsen. Auf den conde bin ich gekommen:, leider funktioniert das ganze nicht so, kann mir jmd. helfen?
#include <unistd.h>
#include <sys/wait.h>
#include <stdio.h>
#include <sys/types.h>
#include <fcntl.h>
#include <signal.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
int fkt(char *ptr);
int main()
{
int fd[2],n; //,fd1;
pid_t pid;
char puffer[100000];
if (pipe(fd) < 0)
{
puts("pipe() failed!");
}
pid = fork();
switch (pid)
{
case -1:
{
puts("fork()failed!");
}
case 0:
{
// Kind
close(fd[1]);
n=read(fd[0], puffer, 100000); // ich lese aus der pipe und speicher inhalt in puffer
printf("\nPuffer: \n%s\nhallo!!", puffer);
}
default:
{
// Eltern
system("ps u");
close(fd[0]);
write(STDOUT_FILENO, puffer, n); // ich schreib in die pipe und zwar die standartausgabe von system
}
}
fkt(puffer);
//hier will ich den inhalt von puffer ausgeben auf dem bildschirm
return 0;
}
int fkt(char *ptr)
{
printf("\nFkt Anfang:\n \n%s \n\nEnde Fkt.\n\n", ptr);
return 0;
}
_________________
mithras
ich will über pipes die Ausgabe eines systemsbefehl in C, also z.B. system(ls -l) in eine array in dem ausführenden programm speichern. Habe bereits ein Tut (www.pronix.de) dazu gelsen. Auf den conde bin ich gekommen:, leider funktioniert das ganze nicht so, kann mir jmd. helfen?
#include <unistd.h>
#include <sys/wait.h>
#include <stdio.h>
#include <sys/types.h>
#include <fcntl.h>
#include <signal.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
int fkt(char *ptr);
int main()
{
int fd[2],n; //,fd1;
pid_t pid;
char puffer[100000];
if (pipe(fd) < 0)
{
puts("pipe() failed!");
}
pid = fork();
switch (pid)
{
case -1:
{
puts("fork()failed!");
}
case 0:
{
// Kind
close(fd[1]);
n=read(fd[0], puffer, 100000); // ich lese aus der pipe und speicher inhalt in puffer
printf("\nPuffer: \n%s\nhallo!!", puffer);
}
default:
{
// Eltern
system("ps u");
close(fd[0]);
write(STDOUT_FILENO, puffer, n); // ich schreib in die pipe und zwar die standartausgabe von system
}
}
fkt(puffer);
//hier will ich den inhalt von puffer ausgeben auf dem bildschirm
return 0;
}
int fkt(char *ptr)
{
printf("\nFkt Anfang:\n \n%s \n\nEnde Fkt.\n\n", ptr);
return 0;
}
_________________
mithras