treba mi pomoc oko sleceg problema... dakle treba da procitam output sistemske komande bez da ga prosledim direktno u fajl (zabrana pisanja po sistemu). radim u linuxu. ono sto sam do sada saznao: sa system() to se ne moze uraditi, moze samo da se prosledi u fajl. sa popen() radi, ali ne mogu da kontrolisem proces, zapravo ne mogu da paralelno radim timeout i ubijem sistemski proces ako je potrebno... probao sam i sledece:
Code:
pid_t pID;
int cnt = 0;
FILE * fd_parser;
int status = 0;
int timeout= 60;
// input: "/home/media/mp3/mp3.mp3";
pID = fork();
if (pID == 0) // child
{
// Code only executed by child process
char cmd[DATA_SIZE];
sprintf(cmd, "mediainfo \"%s\"", input);
fd_parser = popen(cmd, "r");
printf("child terminated.\n");
_exit(0);
}
else if (pID < 0) // failed to fork
{
printf("Fork failed.\n");
exit(1);
}
else // parent
{
// Code only executed by parent process
while(status != 1)
{
sleep(1);
printf("status:%d\n", status);
cnt++;
if(cnt == timeout)
{
kill(pID, -9);
printf("Failed\n");
return 0;
}
}
}
pid_t pID;
int cnt = 0;
FILE * fd_parser;
int status = 0;
int timeout= 60;
// input: "/home/media/mp3/mp3.mp3";
pID = fork();
if (pID == 0) // child
{
// Code only executed by child process
char cmd[DATA_SIZE];
sprintf(cmd, "mediainfo \"%s\"", input);
fd_parser = popen(cmd, "r");
printf("child terminated.\n");
_exit(0);
}
else if (pID < 0) // failed to fork
{
printf("Fork failed.\n");
exit(1);
}
else // parent
{
// Code only executed by parent process
while(status != 1)
{
sleep(1);
printf("status:%d\n", status);
cnt++;
if(cnt == timeout)
{
kill(pID, -9);
printf("Failed\n");
return 0;
}
}
}
ali ovo puca u roku od odmah

hvala i pozdrav!