1 /* Definitions for POSIX spawn interface.
2 Copyright (C) 2000-2018 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <http://www.gnu.org/licenses/>. */
24 #include <sys/types.h>
25 #include <bits/types/sigset_t.h>
28 /* Data structure to contain attributes for thread creation. */
35 struct sched_param __sp
;
41 /* Data structure to contain information about the actions to be
42 performed in the new process with respect to file descriptors. */
47 struct __spawn_action
*__actions
;
49 } posix_spawn_file_actions_t
;
52 /* Flags to be set in the `posix_spawnattr_t'. */
53 #define POSIX_SPAWN_RESETIDS 0x01
54 #define POSIX_SPAWN_SETPGROUP 0x02
55 #define POSIX_SPAWN_SETSIGDEF 0x04
56 #define POSIX_SPAWN_SETSIGMASK 0x08
57 #define POSIX_SPAWN_SETSCHEDPARAM 0x10
58 #define POSIX_SPAWN_SETSCHEDULER 0x20
60 # define POSIX_SPAWN_USEVFORK 0x40
61 # define POSIX_SPAWN_SETSID 0x80
67 /* Spawn a new process executing PATH with the attributes describes in *ATTRP.
68 Before running the process perform the actions described in FILE-ACTIONS.
70 This function is a possible cancellation point and therefore not
71 marked with __THROW. */
72 extern int posix_spawn (pid_t
*__restrict __pid
,
73 const char *__restrict __path
,
74 const posix_spawn_file_actions_t
*__restrict
76 const posix_spawnattr_t
*__restrict __attrp
,
77 char *const __argv
[__restrict_arr
],
78 char *const __envp
[__restrict_arr
]);
80 /* Similar to `posix_spawn' but search for FILE in the PATH.
82 This function is a possible cancellation point and therefore not
83 marked with __THROW. */
84 extern int posix_spawnp (pid_t
*__pid
, const char *__file
,
85 const posix_spawn_file_actions_t
*__file_actions
,
86 const posix_spawnattr_t
*__attrp
,
87 char *const __argv
[], char *const __envp
[]);
90 /* Initialize data structure with attributes for `spawn' to default values. */
91 extern int posix_spawnattr_init (posix_spawnattr_t
*__attr
) __THROW
;
93 /* Free resources associated with ATTR. */
94 extern int posix_spawnattr_destroy (posix_spawnattr_t
*__attr
) __THROW
;
96 /* Store signal mask for signals with default handling from ATTR in
98 extern int posix_spawnattr_getsigdefault (const posix_spawnattr_t
*
100 sigset_t
*__restrict __sigdefault
)
103 /* Set signal mask for signals with default handling in ATTR to SIGDEFAULT. */
104 extern int posix_spawnattr_setsigdefault (posix_spawnattr_t
*__restrict __attr
,
105 const sigset_t
*__restrict
109 /* Store signal mask for the new process from ATTR in SIGMASK. */
110 extern int posix_spawnattr_getsigmask (const posix_spawnattr_t
*__restrict
112 sigset_t
*__restrict __sigmask
) __THROW
;
114 /* Set signal mask for the new process in ATTR to SIGMASK. */
115 extern int posix_spawnattr_setsigmask (posix_spawnattr_t
*__restrict __attr
,
116 const sigset_t
*__restrict __sigmask
)
119 /* Get flag word from the attribute structure. */
120 extern int posix_spawnattr_getflags (const posix_spawnattr_t
*__restrict
122 short int *__restrict __flags
) __THROW
;
124 /* Store flags in the attribute structure. */
125 extern int posix_spawnattr_setflags (posix_spawnattr_t
*_attr
,
126 short int __flags
) __THROW
;
128 /* Get process group ID from the attribute structure. */
129 extern int posix_spawnattr_getpgroup (const posix_spawnattr_t
*__restrict
130 __attr
, pid_t
*__restrict __pgroup
)
133 /* Store process group ID in the attribute structure. */
134 extern int posix_spawnattr_setpgroup (posix_spawnattr_t
*__attr
,
135 pid_t __pgroup
) __THROW
;
137 /* Get scheduling policy from the attribute structure. */
138 extern int posix_spawnattr_getschedpolicy (const posix_spawnattr_t
*
140 int *__restrict __schedpolicy
)
143 /* Store scheduling policy in the attribute structure. */
144 extern int posix_spawnattr_setschedpolicy (posix_spawnattr_t
*__attr
,
145 int __schedpolicy
) __THROW
;
147 /* Get scheduling parameters from the attribute structure. */
148 extern int posix_spawnattr_getschedparam (const posix_spawnattr_t
*
150 struct sched_param
*__restrict
151 __schedparam
) __THROW
;
153 /* Store scheduling parameters in the attribute structure. */
154 extern int posix_spawnattr_setschedparam (posix_spawnattr_t
*__restrict __attr
,
155 const struct sched_param
*
156 __restrict __schedparam
) __THROW
;
159 /* Initialize data structure for file attribute for `spawn' call. */
160 extern int posix_spawn_file_actions_init (posix_spawn_file_actions_t
*
161 __file_actions
) __THROW
;
163 /* Free resources associated with FILE-ACTIONS. */
164 extern int posix_spawn_file_actions_destroy (posix_spawn_file_actions_t
*
165 __file_actions
) __THROW
;
167 /* Add an action to FILE-ACTIONS which tells the implementation to call
168 `open' for the given file during the `spawn' call. */
169 extern int posix_spawn_file_actions_addopen (posix_spawn_file_actions_t
*
170 __restrict __file_actions
,
172 const char *__restrict __path
,
173 int __oflag
, mode_t __mode
)
176 /* Add an action to FILE-ACTIONS which tells the implementation to call
177 `close' for the given file descriptor during the `spawn' call. */
178 extern int posix_spawn_file_actions_addclose (posix_spawn_file_actions_t
*
179 __file_actions
, int __fd
)
182 /* Add an action to FILE-ACTIONS which tells the implementation to call
183 `dup2' for the given file descriptors during the `spawn' call. */
184 extern int posix_spawn_file_actions_adddup2 (posix_spawn_file_actions_t
*
186 int __fd
, int __newfd
) __THROW
;
189 /* Add an action changing the directory to PATH during spawn. This
190 affects the subsequent file actions. */
191 extern int posix_spawn_file_actions_addchdir_np (posix_spawn_file_actions_t
*,
192 const char *__path
) __THROW
;
194 /* Add an action changing the directory to FD during spawn. This
195 affects the subsequent file actions. FD is not duplicated and must
196 be open when the file action is executed. */
197 extern int posix_spawn_file_actions_addfchdir_np (posix_spawn_file_actions_t
*,