[Python-Dev] Best Python API for exposing posix_spawn

Antoine Pitrou solipsis at pitrou.net
Tue Jan 9 05:01:01 EST 2018


On Mon, 08 Jan 2018 09:11:38 +0000
Pablo Galindo Salgado <pablogsal at gmail.com> wrote:
> Hi,
> 
> I'm currently working on exposing posix_spawn in the posix module (and by
> extension in the os module). You can find the initial implementation in
> this PR:
> 
> https://github.com/python/cpython/pull/5109
> 
> As pointed out by Gregory P. Smith, some changes are needed in the way the
> file_actions arguments is passed from Python. For context, posix_spawn has
> the following declaration:
> 
> int posix_spawn(pid_t *pid, const char *path,
> const posix_spawn_file_actions_t *file_actions,
> const posix_spawnattr_t *attrp,
> char *const argv[], char *const envp[]);
> 
> Here, file_actions is an object that represents a list of file actions
> (open, close or dup2) that is populated using helper functions on the C API.
> 
> The question is: what is the best way to deal with this argument?

How about a list of tuples like:
[(os.SPAWN_OPEN, 4, 'README.txt', os.O_RDONLY, 0),
 (os.SPAWN_CLOSE, 5),
 (os.SPAWN_DUP2, 3, 6),
 ]

I don't expect this API to be invoked directly by user code so it
doesn't have to be extremely pretty.

Regards

Antoine.




More information about the Python-Dev mailing list