mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-07-02 17:28:30 +00:00
Make more fixes and improvements
- Remove PAGESIZE constant - Fix realloc() documentation - Fix ttyname_r() error reporting - Make forking more reliable on Windows - Make execvp() a few microseconds faster - Make system() a few microseconds faster - Tighten up the socket-related magic numbers - Loosen restrictions on mmap() offset alignment - Improve GetProgramExecutableName() with getenv("_") - Use mkstemp() as basis for mktemp(), tmpfile(), tmpfd() - Fix flakes in pthread_cancel_test, unix_test, fork_test - Fix recently introduced futex stack overflow regression - Let sockets be passed as stdio to subprocesses on Windows - Improve security of bind() on Windows w/ SO_EXCLUSIVEADDRUSE
This commit is contained in:
parent
140a8a52e5
commit
18bb5888e1
311 changed files with 1239 additions and 2622 deletions
|
@ -28,9 +28,19 @@
|
|||
/**
|
||||
* Duplicates file descriptor/handle.
|
||||
*
|
||||
* On Windows, we can't guarantee the desired file descriptor is used.
|
||||
* We can however remap the standard handles (non-atomically) if their
|
||||
* symbolic names are used.
|
||||
* The `O_CLOEXEC` flag shall be cleared from the resulting file
|
||||
* descriptor; see dup3() to preserve it.
|
||||
*
|
||||
* One use case for duplicating file descriptors is to be able to
|
||||
* reassign an open()'d file or pipe() to the stdio of an executed
|
||||
* subprocess. On Windows, in order for this to work, the subprocess
|
||||
* needs to be a Cosmopolitan program that has socket() linked.
|
||||
*
|
||||
* Only small programs should duplicate sockets. That's because this
|
||||
* implementation uses DuplicateHandle() on Windows, which Microsoft
|
||||
* says might cause its resources to leak internally. Thus it likely
|
||||
* isn't a good idea to design a server that does it a lot and lives
|
||||
* a long time, without contributing a patch to this implementation.
|
||||
*
|
||||
* @param oldfd isn't closed afterwards
|
||||
* @param newfd if already assigned, is silently closed beforehand;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue