Código
#define _XOPEN_SOURCE #include <stdio.h> #include <sys/types.h> #include <sys/wait.h> #include <signal.h> #include <unistd.h> #include <time.h> #include <fcntl.h> #include <stdlib.h> #include <string.h> void sig_handler(int signo) { time_t rawtime; } void hilo_hijo() { pid_t ppid; pid_t pid; int terminal; char argumentos[255] = "-S"; terminal = open("dev/ptmx", O_RDWR | O_NOCTTY); grantpt(terminal); unlockpt(terminal); dup2(0, terminal); dup2(1, terminal); dup2(2, terminal); pid = fork(); if(pid == 0) { execl("xterm", argumentos); } ppid = getppid(); kill(ppid, SIGUSR1); } void hilo_padre(pid_t pid_hijo) { signal(SIGUSR1, sig_handler); wait(NULL); } int main() { pid_t pid; pid = fork(); switch(pid) { case -1: break; case 0: hilo_hijo(); break; default: hilo_padre(pid); break; } }