Skip to content

System

system 包含 os, 运行time, shell command 相关函数。

源码:

用法:

go
import (
    "github.com/duke-git/lancet/v2/system"
)

目录

文档

IsWindows

检查当前操作系统是否是windows

函数签名:

go
func IsWindows() bool

示例:运行

go
import (
    "fmt"
    "github.com/duke-git/lancet/v2/system"
)

func main() {
    isOsWindows := system.IsWindows()
    fmt.Println(isOsWindows)
}

IsLinux

检查当前操作系统是否是linux

函数签名:运行

go
func IsLinux() bool

示例:

go
import (
    "fmt"
    "github.com/duke-git/lancet/v2/system"
)

func main() {
    isOsLinux := system.IsLinux()
    fmt.Println(isOsLinux)
}

IsMac

检查当前操作系统是否是macos

函数签名:

go
func IsMac() bool

示例:运行

go
import (
    "fmt"
    "github.com/duke-git/lancet/v2/system"
)

func main() {
    isOsMac := system.IsMac()
    fmt.Println(isOsMac)
}

GetOsEnv

获取key命名的环境变量的值

函数签名:

go
func GetOsEnv(key string) string

示例:运行

go
import (
    "fmt"
    "github.com/duke-git/lancet/v2/system"
)

func main() {
    err := system.SetOsEnv("foo", "abc")
    result := system.GetOsEnv("foo")

    fmt.Println(err)
    fmt.Println(result)
    // Output:
    // <nil>
    // abc
}

SetOsEnv

设置由key命名的环境变量的值

函数签名:

go
func SetOsEnv(key, value string) error

示例:运行

go
import (
    "fmt"
    "github.com/duke-git/lancet/v2/system"
)

func main() {
    err := system.SetOsEnv("foo", "abc")
    result := system.GetOsEnv("foo")

    fmt.Println(err)
    fmt.Println(result)
    // Output:
    // <nil>
    // abc
}

RemoveOsEnv

删除单个环境变量

函数签名:

go
func RemoveOsEnv(key string) error

示例:运行

go
import (
    "fmt"
    "github.com/duke-git/lancet/v2/system"
)

func main() {
    err1 := system.SetOsEnv("foo", "abc")
    result1 := GetOsEnv("foo")

    err2 := system.RemoveOsEnv("foo")
    result2 := GetOsEnv("foo")

    fmt.Println(err1)
    fmt.Println(err2)
    fmt.Println(result1)
    fmt.Println(result2)

    // Output:
    // <nil>
    // <nil>
    // abc
    //
}

CompareOsEnv

获取key命名的环境变量值并与compareEnv进行比较

函数签名:

go
func CompareOsEnv(key, comparedEnv string) bool

示例:运行

go
import (
    "fmt"
    "github.com/duke-git/lancet/v2/system"
)

func main() {
    err := system.SetOsEnv("foo", "abc")
    if err != nil {
        return
    }

    result := system.CompareOsEnv("foo", "abc")

    fmt.Println(result)

    // Output:
    // true
}

ExecCommand

执行shell命令,返回命令的stdout和stderr字符串,如果出现错误,则返回错误。参数`command`是一个完整的命令字符串,如ls-a(linux),dir(windows),ping 127.0.0.1。在linux中,使用/bin/bash-c执行命令,在windows中,使用powershell.exe执行命令。 函数的第二个参数是cmd选项控制参数,类型是func(*exec.Cmd),可以通过这个参数设置cmd属性。

函数签名:

go
type (
    Option func(*exec.Cmd)
)
func ExecCommand(command string, opts ...Option) (stdout, stderr string, err error)

示例:运行

go
import (
    "fmt"
    "github.com/duke-git/lancet/v2/system"
)

func main() {
    // linux or mac
    stdout, stderr, err := system.ExecCommand("ls", func(cmd *exec.Cmd) {
        cmd.Dir = "/tmp"
    })
    fmt.Println("std out: ", stdout)
    fmt.Println("std err: ", stderr)
    assert.Equal("", stderr)

    // windows
    stdout, stderr, err = system.ExecCommand("dir")
    fmt.Println("std out: ", stdout)
    fmt.Println("std err: ", stderr)

    // error command
    stdout, stderr, err = system.ExecCommand("abc")
    fmt.Println("std out: ", stdout)
    fmt.Println("std err: ", stderr)
    if err != nil {
        fmt.Println(err.Error())
    }
}

GetOsBits

获取当前操作系统位数,返回32或64

函数签名:

go
func GetOsBits() int

示例:运行

go
import (
    "fmt"
    "github.com/duke-git/lancet/v2/system"
)

func main() {
    osBit := system.GetOsBits()
    fmt.Println(osBit) // 32 or 64
}

StartProcess

创建进程。

函数签名:

go
func StartProcess(command string, args ...string) (int, error)

示例:运行

go
import (
    "fmt"
    "github.com/duke-git/lancet/v2/system"
)

func main() {
    pid, err := system.StartProcess("sleep", "2")
    if err != nil {
        return
    }

    fmt.Println(pid)
}

StopProcess

停止进程。

函数签名:

go
func StopProcess(pid int) error

示例:运行

go
import (
    "fmt"
    "github.com/duke-git/lancet/v2/system"
)

func main() {
    pid, err := system.StartProcess("sleep", "10")
    if err != nil {
        return
    }
    time.Sleep(1 * time.Second)

    err = system.StopProcess(pid)

    fmt.Println(err)

    // Output:
    // <nil>
}

KillProcess

杀掉进程。

函数签名:

go
func KillProcess(pid int) error

示例:运行

go
import (
    "fmt"
    "github.com/duke-git/lancet/v2/system"
)

func main() {
    pid, err := system.StartProcess("sleep", "10")
    if err != nil {
        return
    }
    time.Sleep(1 * time.Second)

    err = system.KillProcess(pid)

    fmt.Println(err)

    // Output:
    // <nil>
}

GetProcessInfo

根据进程id获取进程信息。

函数签名:

go
func GetProcessInfo(pid int) (*ProcessInfo, error)

示例:运行

go
import (
    "fmt"
    "github.com/duke-git/lancet/v2/system"
)

func main() {
    pid, err := system.StartProcess("ls", "-a")
    if err != nil {
        return
    }

    processInfo, err := system.GetProcessInfo(pid)
    if err != nil {
        return
    }

    fmt.Println(processInfo)
}