Pavel Begunkov: > At this point it raises a question why it even needs io_uring > infra? I don't think it's really helping you. E.g. why not do it > as a list of operation in a custom format instead of links? That > can be run by a single io_uring request or can even be a normal > syscall. > Makes me wonder about a different ways of handling. E.g. why should > it be run in the created task context (apart from final exec)? Can > requests be run as normal by the original task, each will take the > half created and not yet launched task as a parameter (in some form), > modify it, and the final exec would launch it? I totally agree. I think API should look like this: === // This may be PID fd or something completely different int fd = create_task (); task_manipulate (fd, OP_CHDIR, "/"); task_manipulate (fd, OP_CLOSE, 0); task_manipulate (fd, OP_OPEN, "/dev/null", O_RDONLY, 0666); task_execve (fd, "/bin/true", argv, envp); === We will have ability to do proper error handling. Paper "A fork() in the road" says the same thing. ( https://www.microsoft.com/en-us/research/uploads/prod/2019/04/fork-hotos19.pdf ).