mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
os: handle file creation with close-on-exec flag correctly on darwin, freebsd
Fixes #7187. Update #7193 LGTM=bradfitz R=golang-codereviews, dave, rsc, minux.ma, bradfitz CC=golang-codereviews https://golang.org/cl/64510043
This commit is contained in:
parent
25668b9b34
commit
be8aa4b073
5 changed files with 75 additions and 6 deletions
|
|
@ -81,12 +81,7 @@ func OpenFile(name string, flag int, perm FileMode) (file *File, err error) {
|
|||
|
||||
// There's a race here with fork/exec, which we are
|
||||
// content to live with. See ../syscall/exec_unix.go.
|
||||
// On OS X 10.6, the O_CLOEXEC flag is not respected.
|
||||
// On OS X 10.7, the O_CLOEXEC flag works.
|
||||
// Without a cheap & reliable way to detect 10.6 vs 10.7 at
|
||||
// runtime, we just always call syscall.CloseOnExec on Darwin.
|
||||
// Once >=10.7 is prevalent, this extra call can removed.
|
||||
if syscall.O_CLOEXEC == 0 || runtime.GOOS == "darwin" { // O_CLOEXEC not supported
|
||||
if !supportsCloseOnExec {
|
||||
syscall.CloseOnExec(r)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue