![]() When spawning a new subprocess, it's possible that one or more of the new process's standard input, output, or error descriptors use file descriptor 0, 1, or 2, even if they don't correspond to any of the parent process's original standard input, output, or error descriptors. This can happen if the parent process closes one of its standard descriptors, and the operating system reuses the file descriptor number for a new descriptor. Therefore, be more careful about closing and copying file descriptors in the child process before calling `exec`. Specifically, move file descriptors out of the way as needed so they aren't clobbered, and accommodate cases where multiple standard streams may share the same file descriptor in the parent process. fixes #2634 |
||
---|---|---|
.github/ISSUE_TEMPLATE_DRAFT | ||
.gitlab | ||
pkgs | ||
racket | ||
.gitattributes | ||
.gitignore | ||
.gitlab-ci.yml | ||
.mailmap | ||
.travis.yml | ||
appveyor.yml | ||
azure-pipelines.yml | ||
INSTALL.txt | ||
Makefile | ||
README.md |
This is the source code for the core of Racket. See "INSTALL.txt" for full information on building Racket.
To build the full Racket distribution from this repository, run make
in the top-level directory. To build minimal Racket, run make base
.
The rest of the Racket distribution source code is in other repositories, mostly under the Racket GitHub organization.
Contribute to Racket by submitting a pull request, joining the development mailing list, or visiting the IRC channel.
License
Racket is distributed under the GNU Lesser General Public License (LGPL). This implies that you may link Racket into proprietary applications, provided you follow the rules stated in the LGPL. You can also modify Racket; if you distribute a modified version, you must distribute it under the terms of the LGPL, which in particular states that you must release the source code for the modified software.
See racket/src/COPYING_LESSER.txt for more information.