// Copyright 2023 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.//go:build unixpackage runtimefunc checkfds() {ifislibrary || isarchive {// If the program is actually a library, presumably being consumed by // another program, we don't want to mess around with the file // descriptors.return }const (// F_GETFD, EBADF, O_RDWR are standard across all unixes we support, so // we define them here rather than in each of the OS specific files. = 0x01 = 0x09 = 0x02 ) := []byte("/dev/null\x00")for := 0; < 3; ++ { , := fcntl(int32(), , 0)if >= 0 {continue }if != {print("runtime: unexpected error while checking standard file descriptor ", , ", errno=", , "\n")throw("cannot open standard fds") }if := open(&[0], , 0); < 0 {print("runtime: standard file descriptor ", , " closed, unable to open /dev/null, errno=", , "\n")throw("cannot open standard fds") } elseif != int32() {print("runtime: opened unexpected file descriptor ", , " when attempting to open ", , "\n")throw("cannot open standard fds") } }}
The pages are generated with Goldsv0.7.0-preview. (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu.
PR and bug reports are welcome and can be submitted to the issue list.
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds.