/* fd_set variable required to use select() */ static fd_set set_of_pipes; /* A structure to maintain a linked list of processes... */ struct list_proc{ int p_num; void (*rout_hndl)(); struct list_proc *next; }; static struct list_proc *ini_list=NULL; /* A list of processes will be created and maintained by the reg_process function, containing processes information who are using interrupts */ void reg_process(int num_pipe, void (*routine)()) { struct list_proc *element; element = (struct list_proc *) malloc(sizeof(struct list_proc)); element->p_num = num_pipe; element->rout_hndl = routine; element->next = ini_list; ini_list = element; /* Bring up to date file descriptors' group of the pipes connected to a process that is using signals */ FD_SET(num_pipe, &set_of_pipes); }