28 #include <sys/types.h> 29 #include <sys/socket.h> 89 if (fcntl (err_pdes[0], F_SETFL, O_NONBLOCK) == -1)
93 err_pdes[0] = err_pdes[1] = -1;
101 pid_t sid = setsid ();
103 signal (SIGINT, SIG_IGN);
105 signal (SIGINT, SIG_IGN);
110 if (pdes[1] != STDOUT_FILENO)
112 dup2 (pdes[1], STDOUT_FILENO);
115 dup2 (STDOUT_FILENO, STDIN_FILENO);
117 if (err_pdes[0] != -1)
120 dup2 (err_pdes[1], STDERR_FILENO);
125 execl (
"/bin/sh",
"sh",
"-c",
name, (
char *) 0);
131 if (err_pdes[1] != -1)
141 signal (SIGPIPE, SIG_IGN);
160 #define PIPE_CLOSE_TIMEOUT 5 165 #define SIGTERM_TIMEOUT INT_MAX 172 if (wait_result == -1)
174 kill (state->
pid, SIGTERM);
201 signal (SIGPIPE, SIG_IGN);
pid_t wait_to_die_with_timeout(pid_t pid, int *status, int timeout)
int ser_base_set_tty_state(struct serial *scb, serial_ttystate ttystate)
static void pipe_close(struct serial *scb)
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int int rusage_t pid_t pid
int ser_base_flush_output(struct serial *scb)
int gdb_pipe(int pdes[2])
int ser_base_setbaudrate(struct serial *scb, int rate)
int ser_unix_write_prim(struct serial *scb, const void *buf, size_t len)
int gdb_socketpair_cloexec(int domain, int style, int protocol, int filedes[2])
int ser_base_setstopbits(struct serial *scb, int num)
int ser_unix_read_prim(struct serial *scb, size_t count)
void ser_base_raw(struct serial *scb)
void ser_base_async(struct serial *scb, int async_p)
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int status
int ser_base_drain_output(struct serial *scb)
void close_most_fds(void)
void ser_base_print_tty_state(struct serial *scb, serial_ttystate ttystate, struct ui_file *stream)
#define PIPE_CLOSE_TIMEOUT
int ser_base_setparity(struct serial *scb, int parity)
void serial_add_interface(const struct serial_ops *optable)
int ser_base_flush_input(struct serial *scb)
int ser_base_readchar(struct serial *scb, int timeout)
int ser_base_send_break(struct serial *scb)
int ser_base_write(struct serial *scb, const void *buf, size_t count)
serial_ttystate ser_base_copy_tty_state(struct serial *scb, serial_ttystate ttystate)
static int pipe_open(struct serial *scb, const char *name)
void _initialize_ser_pipe(void)
serial_ttystate ser_base_get_tty_state(struct serial *scb)
static const struct serial_ops pipe_ops