[ BurekUSvemiru @ 31.08.2010. 09:46 ] @
pozdrav dobri ljudi, 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; } } } ali ovo puca u roku od odmah pre je na mestu popen() koriscen system sa upisom u fajl, a fd_parser se kasnije povezivao sa tim .txt fajlom, i to je radilo odlicno. ali ovde popijem segmentation fault. sta ciniti, ima li neko neku ideju? hvala i pozdrav! |