+/** Named pipe used to communicate with process1 */
+char * read_pipe = "/tmp/process1pipe";
+
+/** Named pipe used to communicate with process3 */
+char * write_pipe = "/tmp/process2pipe";
+
+/** Descriptor of input pipe */
+int read_descriptor;
+
+/** Descriptor of output pipe */
+int write_descriptor;
+
+/**
+ * Handler for signals.
+ */
+void sig_handler(int signo)
+{
+ fprintf(stderr, "[%s] Received %s!\n", "process2", strsignal(signo));
+ if (signo == SIGUSR1) {
+ }
+ else if (signo == SIGTERM) {
+ fprintf(stderr, "[%s] > Releasing resources\n", "process2");
+ close(read_descriptor);
+ close(write_descriptor);
+ unlink(write_descriptor);
+ exit(0);
+ }
+ else if (signo == SIGTSTP) {
+ fprintf(stderr, "[%s] > Closing pipes\n", "process2");
+ close(read_descriptor);
+ close(write_descriptor);
+ raise (SIGSTOP);
+ }
+ else if (signo == SIGCONT) {
+ fprintf(stderr, "[%s] > Opening pipes\n", "process2");
+ read_descriptor = open(read_pipe, O_RDONLY);
+ write_descriptor = open(write_pipe, O_WRONLY);
+ }
+}
+