1 | #include <stdio.h>
|
---|
2 | #include <fcntl.h>
|
---|
3 | #include <spawn.h>
|
---|
4 | #include <errno.h>
|
---|
5 |
|
---|
6 | #define panic(str) if (ret != 0) { errno = ret; perror(str); return 1; }
|
---|
7 |
|
---|
8 | int main() {
|
---|
9 | int ret;
|
---|
10 | pid_t child;
|
---|
11 | char* const av[] = { "err", NULL };
|
---|
12 | posix_spawn_file_actions_t child_fd_acts;
|
---|
13 | ret = posix_spawn_file_actions_init(&child_fd_acts);
|
---|
14 | panic("init");
|
---|
15 | ret = posix_spawn_file_actions_addopen(&child_fd_acts, 1, "errlog",
|
---|
16 | O_WRONLY | O_CREAT | O_TRUNC, 0644);
|
---|
17 | panic("addopen");
|
---|
18 | ret = posix_spawn_file_actions_adddup2(&child_fd_acts, 1, 2);
|
---|
19 | panic("adddup2");
|
---|
20 | ret = posix_spawn(&child, "./err", &child_fd_acts, NULL, av, NULL);
|
---|
21 | panic("spawn");
|
---|
22 | return 0;
|
---|
23 | }
|
---|
24 |
|
---|