Neču cygwin, želim uraditi čisti port ili ču radije pronači nešto drugo... ne volim imati za aplikaciju od nekoliko kb sa sobom i dll sa nekoliko stotina kb, nije "estetski" :D
Malo sam zbunjen kako fork funkcioniše...
Code:
if ((pipe(p)==-1) || ((pid = fork())==-1))
err(1, NULL);
if (pid == 0)
{
if ((close(0)==-1) || (close(1)==-1) || (dup2(fd, 1)==-1) ||
(dup2(p[0], 0)==-1) || (close(fd)==-1) ||
(close(p[0])==-1) || (close(p[1])==-1))
err(1, NULL);
execl(BZIP2, BZIP2, "-zc", NULL);
err(1, "%s", BZIP2);
};
if (close(p[0])==-1)
err(1, NULL);
offtout(lenf, buf);
if (write(p[1], buf, 8) != 8)
err(1, NULL);
offtout((scan - lenb)- (lastscan + lenf), buf);
if (write(p[1], buf, 8) != 8)
err(1, NULL);
offtout((pos - lenb)- (lastpos + lenf), buf);
if (write(p[1], buf, 8) != 8)
err(1, NULL);
Ako dobro razumijem, sva koda posle fork-a štartuje se u novom processu i kao kod threada, ne može direktno da dođe do variabla parent processa. Ako se ne varam pipe mu ovdje služi za IPC, ali nije mi baš jasno kako parent process uhvati to što mu child šalje.
Nezgodno mi je što nemam ni jedne *nix mašine u blizini, da bi mogao da debugujem aplikaciju, da vidim kako radi.