#include #include #include #include #define panic(str) if (ret != 0) { errno = ret; perror(str); return 1; } int main() { int ret; pid_t child; char* const av[] = { "posix_spawn_redir_err", NULL }; posix_spawn_file_actions_t child_fd_acts; ret = posix_spawn_file_actions_init(&child_fd_acts); panic("init"); ret = posix_spawn_file_actions_addopen(&child_fd_acts, 1, "errlog", O_WRONLY | O_CREAT | O_TRUNC, 0644); panic("addopen"); ret = posix_spawn_file_actions_adddup2(&child_fd_acts, 1, 2); panic("adddup2"); ret = posix_spawn(&child, "./posix_spawn_redir_err", &child_fd_acts, NULL, av, NULL); panic("spawn"); return 0; }