github.com/ccccaoqing/test@v0.0.0-20220510085219-3985d23445c0/src/os/sys_darwin.go (about)

     1  // Copyright 2014 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package os
     6  
     7  import "syscall"
     8  
     9  // supportsCloseOnExec reports whether the platform supports the
    10  // O_CLOEXEC flag.
    11  var supportsCloseOnExec bool
    12  
    13  func init() {
    14  	// Seems like kern.osreldate is veiled on latest OS X. We use
    15  	// kern.osrelease instead.
    16  	osver, err := syscall.Sysctl("kern.osrelease")
    17  	if err != nil {
    18  		return
    19  	}
    20  	var i int
    21  	for i = range osver {
    22  		if osver[i] != '.' {
    23  			continue
    24  		}
    25  	}
    26  	// The O_CLOEXEC flag was introduced in OS X 10.7 (Darwin
    27  	// 11.0.0). See http://support.apple.com/kb/HT1633.
    28  	if i > 2 || i == 2 && osver[0] >= '1' && osver[1] >= '1' {
    29  		supportsCloseOnExec = true
    30  	}
    31  }