#include "main.h" enum { IN = 1, OUT = 0 }; pid_t child[2]; void exitfunc(void) { kill(child[0],SIGTERM); kill(child[1],SIGTERM); } int main(int argc, char *argv[]) { int pkt[2]; int point[2]; int resolv[2]; if(getuid() == 0 || geteuid() == 0) { pipe(pkt); pipe(point); pipe(resolv); if((child[0] = fork()) == 0) { close(pkt[OUT]); close(resolv[OUT]); close(point[OUT]); close(point[IN]); packet_handling_child(pkt[IN],resolv[IN]); } else { if((child[1] = fork()) == 0) { close(pkt[IN]); close(pkt[OUT]); close(point[OUT]); close(resolv[IN]); point_handling_child(point[IN],resolv[OUT]); } else { atexit(exitfunc); close(pkt[IN]); close(point[IN]); close(resolv[OUT]); close(resolv[IN]); graphics_handling_child(pkt[OUT],point[OUT],argc,argv); } } } else { fprintf(stderr,"You Need to be Root\n"); return 1; } return 0; }