Connect minish-once to minish using a pipe
commitd22270aef20cff58d7ed2ddbdef033c193667771
authorff <_ff@tuta.io>
Sat, 9 Dec 2017 14:35:37 +0000 (9 15:35 +0100)
committerff <_ff@tuta.io>
Sat, 9 Dec 2017 14:35:37 +0000 (9 15:35 +0100)
tree399a3822f7c04de45c97a05379e0c1964b876ef3
parentdb6c6116fd6cf4c0a5eeb404159434a10e0f789d
Connect minish-once to minish using a pipe

The pipe is created by minish.
minish uses fcntl() to set the O_NONBLOCK flag on the pipe,
so that read() returns -1 instead of blocking when the pipe is empty.
The writing end is passed to minish-once
by writing the bytes of the file descriptor as arguments,
one byte per argument.
If the byte is not 0, it is followed by 0.
Before terminating, minish-once writes its return code in the pipe;
minish reads it and terminates itself with the same error code.
minish-once closes its end of the pipe before attempting execv(),
so that the executing command has no way to access it.
If execv() fails, minish-once does not write in the pipe,
because minish should not terminate in that case.
Devember/log09.txt [new file with mode: 0644]
src/minish-once.c
src/minish.c