Home | History | Annotate | Download | only in os
      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 }
     32