syscall: forkExec - todo
This commit is contained in:
@@ -14,6 +14,7 @@ import (
|
|||||||
|
|
||||||
"github.com/goplus/llgo/c"
|
"github.com/goplus/llgo/c"
|
||||||
"github.com/goplus/llgo/c/os"
|
"github.com/goplus/llgo/c/os"
|
||||||
|
"github.com/goplus/llgo/c/syscall"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -116,18 +117,18 @@ func Getenv(key string) (value string, found bool) {
|
|||||||
func Setenv(key, value string) error {
|
func Setenv(key, value string) error {
|
||||||
envOnce.Do(copyenv)
|
envOnce.Do(copyenv)
|
||||||
if len(key) == 0 {
|
if len(key) == 0 {
|
||||||
return EINVAL
|
return Errno(syscall.EINVAL)
|
||||||
}
|
}
|
||||||
for i := 0; i < len(key); i++ {
|
for i := 0; i < len(key); i++ {
|
||||||
if key[i] == '=' || key[i] == 0 {
|
if key[i] == '=' || key[i] == 0 {
|
||||||
return EINVAL
|
return Errno(syscall.EINVAL)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// On Plan 9, null is used as a separator, eg in $path.
|
// On Plan 9, null is used as a separator, eg in $path.
|
||||||
if runtime.GOOS != "plan9" {
|
if runtime.GOOS != "plan9" {
|
||||||
for i := 0; i < len(value); i++ {
|
for i := 0; i < len(value); i++ {
|
||||||
if value[i] == 0 {
|
if value[i] == 0 {
|
||||||
return EINVAL
|
return Errno(syscall.EINVAL)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
39
internal/lib/syscall/forkpipe.go
Normal file
39
internal/lib/syscall/forkpipe.go
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
// Copyright 2011 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 aix || darwin
|
||||||
|
|
||||||
|
package syscall
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/goplus/llgo/c"
|
||||||
|
"github.com/goplus/llgo/c/os"
|
||||||
|
"github.com/goplus/llgo/c/syscall"
|
||||||
|
)
|
||||||
|
|
||||||
|
// forkExecPipe opens a pipe and non-atomically sets O_CLOEXEC on both file
|
||||||
|
// descriptors.
|
||||||
|
func forkExecPipe(p []int) error {
|
||||||
|
err := Pipe(p)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
ret := os.Fcntl(c.Int(p[0]), syscall.F_SETFD, syscall.FD_CLOEXEC)
|
||||||
|
if ret != 0 {
|
||||||
|
return Errno(ret)
|
||||||
|
}
|
||||||
|
ret = os.Fcntl(c.Int(p[1]), syscall.F_SETFD, syscall.FD_CLOEXEC)
|
||||||
|
if ret != 0 {
|
||||||
|
return Errno(ret)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func acquireForkLock() {
|
||||||
|
ForkLock.Lock()
|
||||||
|
}
|
||||||
|
|
||||||
|
func releaseForkLock() {
|
||||||
|
ForkLock.Unlock()
|
||||||
|
}
|
||||||
@@ -137,7 +137,7 @@ func Stat(path string, stat *Stat_t) (err error) {
|
|||||||
|
|
||||||
func Pipe(p []int) (err error) {
|
func Pipe(p []int) (err error) {
|
||||||
if len(p) != 2 {
|
if len(p) != 2 {
|
||||||
return EINVAL
|
return Errno(syscall.EINVAL)
|
||||||
}
|
}
|
||||||
var q [2]c.Int
|
var q [2]c.Int
|
||||||
ret := os.Pipe(&q)
|
ret := os.Pipe(&q)
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
|
|
||||||
package syscall
|
package syscall
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/goplus/llgo/c/syscall"
|
||||||
|
)
|
||||||
|
|
||||||
func Getgroups() (gids []int, err error) {
|
func Getgroups() (gids []int, err error) {
|
||||||
/* TODO(xsw):
|
/* TODO(xsw):
|
||||||
n, err := getgroups(0, nil)
|
n, err := getgroups(0, nil)
|
||||||
@@ -106,9 +110,13 @@ func (w WaitStatus) Signal() Signal {
|
|||||||
|
|
||||||
func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }
|
func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }
|
||||||
|
|
||||||
func (w WaitStatus) Stopped() bool { return w&mask == stopped && Signal(w>>shift) != SIGSTOP }
|
func (w WaitStatus) Stopped() bool {
|
||||||
|
return w&mask == stopped && Signal(w>>shift) != Signal(syscall.SIGSTOP)
|
||||||
|
}
|
||||||
|
|
||||||
func (w WaitStatus) Continued() bool { return w&mask == stopped && Signal(w>>shift) == SIGSTOP }
|
func (w WaitStatus) Continued() bool {
|
||||||
|
return w&mask == stopped && Signal(w>>shift) == Signal(syscall.SIGSTOP)
|
||||||
|
}
|
||||||
|
|
||||||
func (w WaitStatus) StopSignal() Signal {
|
func (w WaitStatus) StopSignal() Signal {
|
||||||
if !w.Stopped() {
|
if !w.Stopped() {
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import (
|
|||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"github.com/goplus/llgo/c"
|
"github.com/goplus/llgo/c"
|
||||||
|
"github.com/goplus/llgo/c/syscall"
|
||||||
"github.com/goplus/llgo/internal/lib/internal/oserror"
|
"github.com/goplus/llgo/internal/lib/internal/oserror"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -29,11 +30,11 @@ func (e Errno) Error() string {
|
|||||||
func (e Errno) Is(target error) bool {
|
func (e Errno) Is(target error) bool {
|
||||||
switch target {
|
switch target {
|
||||||
case oserror.ErrPermission:
|
case oserror.ErrPermission:
|
||||||
return e == EACCES || e == EPERM
|
return e == Errno(syscall.EACCES) || e == Errno(syscall.EPERM)
|
||||||
case oserror.ErrExist:
|
case oserror.ErrExist:
|
||||||
return e == EEXIST || e == ENOTEMPTY
|
return e == Errno(syscall.EEXIST) || e == Errno(syscall.ENOTEMPTY)
|
||||||
case oserror.ErrNotExist:
|
case oserror.ErrNotExist:
|
||||||
return e == ENOENT
|
return e == Errno(syscall.ENOENT)
|
||||||
// TODO(xsw): go1.21
|
// TODO(xsw): go1.21
|
||||||
// case errors.ErrUnsupported:
|
// case errors.ErrUnsupported:
|
||||||
// return e == ENOSYS || e == ENOTSUP || e == EOPNOTSUPP
|
// return e == ENOSYS || e == ENOTSUP || e == EOPNOTSUPP
|
||||||
@@ -42,11 +43,12 @@ func (e Errno) Is(target error) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (e Errno) Temporary() bool {
|
func (e Errno) Temporary() bool {
|
||||||
return e == EINTR || e == EMFILE || e == ENFILE || e.Timeout()
|
return e == Errno(syscall.EINTR) || e == Errno(syscall.EMFILE) ||
|
||||||
|
e == Errno(syscall.ENFILE) || e.Timeout()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e Errno) Timeout() bool {
|
func (e Errno) Timeout() bool {
|
||||||
return e == EAGAIN || e == EWOULDBLOCK || e == ETIMEDOUT
|
return e == Errno(syscall.EAGAIN) || e == Errno(syscall.EWOULDBLOCK) || e == Errno(syscall.ETIMEDOUT)
|
||||||
}
|
}
|
||||||
|
|
||||||
// A Signal is a number describing a process signal.
|
// A Signal is a number describing a process signal.
|
||||||
|
|||||||
@@ -1,165 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2024 The GoPlus Authors (goplus.org). All rights reserved.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package syscall
|
|
||||||
|
|
||||||
// Errors
|
|
||||||
const (
|
|
||||||
E2BIG = Errno(0x7)
|
|
||||||
EACCES = Errno(0xd)
|
|
||||||
EADDRINUSE = Errno(0x30)
|
|
||||||
EADDRNOTAVAIL = Errno(0x31)
|
|
||||||
EAFNOSUPPORT = Errno(0x2f)
|
|
||||||
EAGAIN = Errno(0x23)
|
|
||||||
EALREADY = Errno(0x25)
|
|
||||||
EAUTH = Errno(0x50)
|
|
||||||
EBADARCH = Errno(0x56)
|
|
||||||
EBADEXEC = Errno(0x55)
|
|
||||||
EBADF = Errno(0x9)
|
|
||||||
EBADMACHO = Errno(0x58)
|
|
||||||
EBADMSG = Errno(0x5e)
|
|
||||||
EBADRPC = Errno(0x48)
|
|
||||||
EBUSY = Errno(0x10)
|
|
||||||
ECANCELED = Errno(0x59)
|
|
||||||
ECHILD = Errno(0xa)
|
|
||||||
ECONNABORTED = Errno(0x35)
|
|
||||||
ECONNREFUSED = Errno(0x3d)
|
|
||||||
ECONNRESET = Errno(0x36)
|
|
||||||
EDEADLK = Errno(0xb)
|
|
||||||
EDESTADDRREQ = Errno(0x27)
|
|
||||||
EDEVERR = Errno(0x53)
|
|
||||||
EDOM = Errno(0x21)
|
|
||||||
EDQUOT = Errno(0x45)
|
|
||||||
EEXIST = Errno(0x11)
|
|
||||||
EFAULT = Errno(0xe)
|
|
||||||
EFBIG = Errno(0x1b)
|
|
||||||
EFTYPE = Errno(0x4f)
|
|
||||||
EHOSTDOWN = Errno(0x40)
|
|
||||||
EHOSTUNREACH = Errno(0x41)
|
|
||||||
EIDRM = Errno(0x5a)
|
|
||||||
EILSEQ = Errno(0x5c)
|
|
||||||
EINPROGRESS = Errno(0x24)
|
|
||||||
EINTR = Errno(0x4)
|
|
||||||
EINVAL = Errno(0x16)
|
|
||||||
EIO = Errno(0x5)
|
|
||||||
EISCONN = Errno(0x38)
|
|
||||||
EISDIR = Errno(0x15)
|
|
||||||
ELAST = Errno(0x6a)
|
|
||||||
ELOOP = Errno(0x3e)
|
|
||||||
EMFILE = Errno(0x18)
|
|
||||||
EMLINK = Errno(0x1f)
|
|
||||||
EMSGSIZE = Errno(0x28)
|
|
||||||
EMULTIHOP = Errno(0x5f)
|
|
||||||
ENAMETOOLONG = Errno(0x3f)
|
|
||||||
ENEEDAUTH = Errno(0x51)
|
|
||||||
ENETDOWN = Errno(0x32)
|
|
||||||
ENETRESET = Errno(0x34)
|
|
||||||
ENETUNREACH = Errno(0x33)
|
|
||||||
ENFILE = Errno(0x17)
|
|
||||||
ENOATTR = Errno(0x5d)
|
|
||||||
ENOBUFS = Errno(0x37)
|
|
||||||
ENODATA = Errno(0x60)
|
|
||||||
ENODEV = Errno(0x13)
|
|
||||||
ENOENT = Errno(0x2)
|
|
||||||
ENOEXEC = Errno(0x8)
|
|
||||||
ENOLCK = Errno(0x4d)
|
|
||||||
ENOLINK = Errno(0x61)
|
|
||||||
ENOMEM = Errno(0xc)
|
|
||||||
ENOMSG = Errno(0x5b)
|
|
||||||
ENOPOLICY = Errno(0x67)
|
|
||||||
ENOPROTOOPT = Errno(0x2a)
|
|
||||||
ENOSPC = Errno(0x1c)
|
|
||||||
ENOSR = Errno(0x62)
|
|
||||||
ENOSTR = Errno(0x63)
|
|
||||||
ENOSYS = Errno(0x4e)
|
|
||||||
ENOTBLK = Errno(0xf)
|
|
||||||
ENOTCONN = Errno(0x39)
|
|
||||||
ENOTDIR = Errno(0x14)
|
|
||||||
ENOTEMPTY = Errno(0x42)
|
|
||||||
ENOTRECOVERABLE = Errno(0x68)
|
|
||||||
ENOTSOCK = Errno(0x26)
|
|
||||||
ENOTSUP = Errno(0x2d)
|
|
||||||
ENOTTY = Errno(0x19)
|
|
||||||
ENXIO = Errno(0x6)
|
|
||||||
EOPNOTSUPP = Errno(0x66)
|
|
||||||
EOVERFLOW = Errno(0x54)
|
|
||||||
EOWNERDEAD = Errno(0x69)
|
|
||||||
EPERM = Errno(0x1)
|
|
||||||
EPFNOSUPPORT = Errno(0x2e)
|
|
||||||
EPIPE = Errno(0x20)
|
|
||||||
EPROCLIM = Errno(0x43)
|
|
||||||
EPROCUNAVAIL = Errno(0x4c)
|
|
||||||
EPROGMISMATCH = Errno(0x4b)
|
|
||||||
EPROGUNAVAIL = Errno(0x4a)
|
|
||||||
EPROTO = Errno(0x64)
|
|
||||||
EPROTONOSUPPORT = Errno(0x2b)
|
|
||||||
EPROTOTYPE = Errno(0x29)
|
|
||||||
EPWROFF = Errno(0x52)
|
|
||||||
EQFULL = Errno(0x6a)
|
|
||||||
ERANGE = Errno(0x22)
|
|
||||||
EREMOTE = Errno(0x47)
|
|
||||||
EROFS = Errno(0x1e)
|
|
||||||
ERPCMISMATCH = Errno(0x49)
|
|
||||||
ESHLIBVERS = Errno(0x57)
|
|
||||||
ESHUTDOWN = Errno(0x3a)
|
|
||||||
ESOCKTNOSUPPORT = Errno(0x2c)
|
|
||||||
ESPIPE = Errno(0x1d)
|
|
||||||
ESRCH = Errno(0x3)
|
|
||||||
ESTALE = Errno(0x46)
|
|
||||||
ETIME = Errno(0x65)
|
|
||||||
ETIMEDOUT = Errno(0x3c)
|
|
||||||
ETOOMANYREFS = Errno(0x3b)
|
|
||||||
ETXTBSY = Errno(0x1a)
|
|
||||||
EUSERS = Errno(0x44)
|
|
||||||
EWOULDBLOCK = Errno(0x23)
|
|
||||||
EXDEV = Errno(0x12)
|
|
||||||
)
|
|
||||||
|
|
||||||
// Signals
|
|
||||||
const (
|
|
||||||
SIGABRT = Signal(0x6)
|
|
||||||
SIGALRM = Signal(0xe)
|
|
||||||
SIGBUS = Signal(0xa)
|
|
||||||
SIGCHLD = Signal(0x14)
|
|
||||||
SIGCONT = Signal(0x13)
|
|
||||||
SIGEMT = Signal(0x7)
|
|
||||||
SIGFPE = Signal(0x8)
|
|
||||||
SIGHUP = Signal(0x1)
|
|
||||||
SIGILL = Signal(0x4)
|
|
||||||
SIGINFO = Signal(0x1d)
|
|
||||||
SIGINT = Signal(0x2)
|
|
||||||
SIGIO = Signal(0x17)
|
|
||||||
SIGIOT = Signal(0x6)
|
|
||||||
SIGKILL = Signal(0x9)
|
|
||||||
SIGPIPE = Signal(0xd)
|
|
||||||
SIGPROF = Signal(0x1b)
|
|
||||||
SIGQUIT = Signal(0x3)
|
|
||||||
SIGSEGV = Signal(0xb)
|
|
||||||
SIGSTOP = Signal(0x11)
|
|
||||||
SIGSYS = Signal(0xc)
|
|
||||||
SIGTERM = Signal(0xf)
|
|
||||||
SIGTRAP = Signal(0x5)
|
|
||||||
SIGTSTP = Signal(0x12)
|
|
||||||
SIGTTIN = Signal(0x15)
|
|
||||||
SIGTTOU = Signal(0x16)
|
|
||||||
SIGURG = Signal(0x10)
|
|
||||||
SIGUSR1 = Signal(0x1e)
|
|
||||||
SIGUSR2 = Signal(0x1f)
|
|
||||||
SIGVTALRM = Signal(0x1a)
|
|
||||||
SIGWINCH = Signal(0x1c)
|
|
||||||
SIGXCPU = Signal(0x18)
|
|
||||||
SIGXFSZ = Signal(0x19)
|
|
||||||
)
|
|
||||||
@@ -1,193 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2024 The GoPlus Authors (goplus.org). All rights reserved.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package syscall
|
|
||||||
|
|
||||||
// Errors
|
|
||||||
const (
|
|
||||||
E2BIG = Errno(0x7)
|
|
||||||
EACCES = Errno(0xd)
|
|
||||||
EADDRINUSE = Errno(0x62)
|
|
||||||
EADDRNOTAVAIL = Errno(0x63)
|
|
||||||
EADV = Errno(0x44)
|
|
||||||
EAFNOSUPPORT = Errno(0x61)
|
|
||||||
EAGAIN = Errno(0xb)
|
|
||||||
EALREADY = Errno(0x72)
|
|
||||||
EBADE = Errno(0x34)
|
|
||||||
EBADF = Errno(0x9)
|
|
||||||
EBADFD = Errno(0x4d)
|
|
||||||
EBADMSG = Errno(0x4a)
|
|
||||||
EBADR = Errno(0x35)
|
|
||||||
EBADRQC = Errno(0x38)
|
|
||||||
EBADSLT = Errno(0x39)
|
|
||||||
EBFONT = Errno(0x3b)
|
|
||||||
EBUSY = Errno(0x10)
|
|
||||||
ECANCELED = Errno(0x7d)
|
|
||||||
ECHILD = Errno(0xa)
|
|
||||||
ECHRNG = Errno(0x2c)
|
|
||||||
ECOMM = Errno(0x46)
|
|
||||||
ECONNABORTED = Errno(0x67)
|
|
||||||
ECONNREFUSED = Errno(0x6f)
|
|
||||||
ECONNRESET = Errno(0x68)
|
|
||||||
EDEADLK = Errno(0x23)
|
|
||||||
EDEADLOCK = Errno(0x23)
|
|
||||||
EDESTADDRREQ = Errno(0x59)
|
|
||||||
EDOM = Errno(0x21)
|
|
||||||
EDOTDOT = Errno(0x49)
|
|
||||||
EDQUOT = Errno(0x7a)
|
|
||||||
EEXIST = Errno(0x11)
|
|
||||||
EFAULT = Errno(0xe)
|
|
||||||
EFBIG = Errno(0x1b)
|
|
||||||
EHOSTDOWN = Errno(0x70)
|
|
||||||
EHOSTUNREACH = Errno(0x71)
|
|
||||||
EIDRM = Errno(0x2b)
|
|
||||||
EILSEQ = Errno(0x54)
|
|
||||||
EINPROGRESS = Errno(0x73)
|
|
||||||
EINTR = Errno(0x4)
|
|
||||||
EINVAL = Errno(0x16)
|
|
||||||
EIO = Errno(0x5)
|
|
||||||
EISCONN = Errno(0x6a)
|
|
||||||
EISDIR = Errno(0x15)
|
|
||||||
EISNAM = Errno(0x78)
|
|
||||||
EKEYEXPIRED = Errno(0x7f)
|
|
||||||
EKEYREJECTED = Errno(0x81)
|
|
||||||
EKEYREVOKED = Errno(0x80)
|
|
||||||
EL2HLT = Errno(0x33)
|
|
||||||
EL2NSYNC = Errno(0x2d)
|
|
||||||
EL3HLT = Errno(0x2e)
|
|
||||||
EL3RST = Errno(0x2f)
|
|
||||||
ELIBACC = Errno(0x4f)
|
|
||||||
ELIBBAD = Errno(0x50)
|
|
||||||
ELIBEXEC = Errno(0x53)
|
|
||||||
ELIBMAX = Errno(0x52)
|
|
||||||
ELIBSCN = Errno(0x51)
|
|
||||||
ELNRNG = Errno(0x30)
|
|
||||||
ELOOP = Errno(0x28)
|
|
||||||
EMEDIUMTYPE = Errno(0x7c)
|
|
||||||
EMFILE = Errno(0x18)
|
|
||||||
EMLINK = Errno(0x1f)
|
|
||||||
EMSGSIZE = Errno(0x5a)
|
|
||||||
EMULTIHOP = Errno(0x48)
|
|
||||||
ENAMETOOLONG = Errno(0x24)
|
|
||||||
ENAVAIL = Errno(0x77)
|
|
||||||
ENETDOWN = Errno(0x64)
|
|
||||||
ENETRESET = Errno(0x66)
|
|
||||||
ENETUNREACH = Errno(0x65)
|
|
||||||
ENFILE = Errno(0x17)
|
|
||||||
ENOANO = Errno(0x37)
|
|
||||||
ENOBUFS = Errno(0x69)
|
|
||||||
ENOCSI = Errno(0x32)
|
|
||||||
ENODATA = Errno(0x3d)
|
|
||||||
ENODEV = Errno(0x13)
|
|
||||||
ENOENT = Errno(0x2)
|
|
||||||
ENOEXEC = Errno(0x8)
|
|
||||||
ENOKEY = Errno(0x7e)
|
|
||||||
ENOLCK = Errno(0x25)
|
|
||||||
ENOLINK = Errno(0x43)
|
|
||||||
ENOMEDIUM = Errno(0x7b)
|
|
||||||
ENOMEM = Errno(0xc)
|
|
||||||
ENOMSG = Errno(0x2a)
|
|
||||||
ENONET = Errno(0x40)
|
|
||||||
ENOPKG = Errno(0x41)
|
|
||||||
ENOPROTOOPT = Errno(0x5c)
|
|
||||||
ENOSPC = Errno(0x1c)
|
|
||||||
ENOSR = Errno(0x3f)
|
|
||||||
ENOSTR = Errno(0x3c)
|
|
||||||
ENOSYS = Errno(0x26)
|
|
||||||
ENOTBLK = Errno(0xf)
|
|
||||||
ENOTCONN = Errno(0x6b)
|
|
||||||
ENOTDIR = Errno(0x14)
|
|
||||||
ENOTEMPTY = Errno(0x27)
|
|
||||||
ENOTNAM = Errno(0x76)
|
|
||||||
ENOTRECOVERABLE = Errno(0x83)
|
|
||||||
ENOTSOCK = Errno(0x58)
|
|
||||||
ENOTSUP = Errno(0x5f)
|
|
||||||
ENOTTY = Errno(0x19)
|
|
||||||
ENOTUNIQ = Errno(0x4c)
|
|
||||||
ENXIO = Errno(0x6)
|
|
||||||
EOPNOTSUPP = Errno(0x5f)
|
|
||||||
EOVERFLOW = Errno(0x4b)
|
|
||||||
EOWNERDEAD = Errno(0x82)
|
|
||||||
EPERM = Errno(0x1)
|
|
||||||
EPFNOSUPPORT = Errno(0x60)
|
|
||||||
EPIPE = Errno(0x20)
|
|
||||||
EPROTO = Errno(0x47)
|
|
||||||
EPROTONOSUPPORT = Errno(0x5d)
|
|
||||||
EPROTOTYPE = Errno(0x5b)
|
|
||||||
ERANGE = Errno(0x22)
|
|
||||||
EREMCHG = Errno(0x4e)
|
|
||||||
EREMOTE = Errno(0x42)
|
|
||||||
EREMOTEIO = Errno(0x79)
|
|
||||||
ERESTART = Errno(0x55)
|
|
||||||
ERFKILL = Errno(0x84)
|
|
||||||
EROFS = Errno(0x1e)
|
|
||||||
ESHUTDOWN = Errno(0x6c)
|
|
||||||
ESOCKTNOSUPPORT = Errno(0x5e)
|
|
||||||
ESPIPE = Errno(0x1d)
|
|
||||||
ESRCH = Errno(0x3)
|
|
||||||
ESRMNT = Errno(0x45)
|
|
||||||
ESTALE = Errno(0x74)
|
|
||||||
ESTRPIPE = Errno(0x56)
|
|
||||||
ETIME = Errno(0x3e)
|
|
||||||
ETIMEDOUT = Errno(0x6e)
|
|
||||||
ETOOMANYREFS = Errno(0x6d)
|
|
||||||
ETXTBSY = Errno(0x1a)
|
|
||||||
EUCLEAN = Errno(0x75)
|
|
||||||
EUNATCH = Errno(0x31)
|
|
||||||
EUSERS = Errno(0x57)
|
|
||||||
EWOULDBLOCK = Errno(0xb)
|
|
||||||
EXDEV = Errno(0x12)
|
|
||||||
EXFULL = Errno(0x36)
|
|
||||||
)
|
|
||||||
|
|
||||||
// Signals
|
|
||||||
const (
|
|
||||||
SIGABRT = Signal(0x6)
|
|
||||||
SIGALRM = Signal(0xe)
|
|
||||||
SIGBUS = Signal(0x7)
|
|
||||||
SIGCHLD = Signal(0x11)
|
|
||||||
SIGCLD = Signal(0x11)
|
|
||||||
SIGCONT = Signal(0x12)
|
|
||||||
SIGFPE = Signal(0x8)
|
|
||||||
SIGHUP = Signal(0x1)
|
|
||||||
SIGILL = Signal(0x4)
|
|
||||||
SIGINT = Signal(0x2)
|
|
||||||
SIGIO = Signal(0x1d)
|
|
||||||
SIGIOT = Signal(0x6)
|
|
||||||
SIGKILL = Signal(0x9)
|
|
||||||
SIGPIPE = Signal(0xd)
|
|
||||||
SIGPOLL = Signal(0x1d)
|
|
||||||
SIGPROF = Signal(0x1b)
|
|
||||||
SIGPWR = Signal(0x1e)
|
|
||||||
SIGQUIT = Signal(0x3)
|
|
||||||
SIGSEGV = Signal(0xb)
|
|
||||||
SIGSTKFLT = Signal(0x10)
|
|
||||||
SIGSTOP = Signal(0x13)
|
|
||||||
SIGSYS = Signal(0x1f)
|
|
||||||
SIGTERM = Signal(0xf)
|
|
||||||
SIGTRAP = Signal(0x5)
|
|
||||||
SIGTSTP = Signal(0x14)
|
|
||||||
SIGTTIN = Signal(0x15)
|
|
||||||
SIGTTOU = Signal(0x16)
|
|
||||||
SIGUNUSED = Signal(0x1f)
|
|
||||||
SIGURG = Signal(0x17)
|
|
||||||
SIGUSR1 = Signal(0xa)
|
|
||||||
SIGUSR2 = Signal(0xc)
|
|
||||||
SIGVTALRM = Signal(0x1a)
|
|
||||||
SIGWINCH = Signal(0x1c)
|
|
||||||
SIGXCPU = Signal(0x18)
|
|
||||||
SIGXFSZ = Signal(0x19)
|
|
||||||
)
|
|
||||||
Reference in New Issue
Block a user