乐趣区

关于go:Go-快速入门指南-进程常用方法

exit

调用 os 包,自定义 status code

例子

package main

import "os"

func main() {os.Exit(3)

    println("exiting ...") // 不会执行到这里
}

// $ go run main.go
// 输入如下 
/**
  exit status 3
*/

过程 id

调用 os 包即可。

例子

package main

import (
    "fmt"
    "os"
)

func main() {fmt.Printf("Process ID = %d\n", os.Getpid())
    fmt.Printf("Parent process ID = %d\n", os.Getppid())
}

// $ go run main.go
// 输入如下,你的输入可能和这里的不一样
/**
  Process ID = 13962
  Parent process ID =  13860
*/

信号

调用 os/signal 包即可。

例子

package main

import (
    "fmt"
    "os"
    "os/signal"
)

func main() {c := make(chan os.Signal, 1)
    signal.Notify(c, os.Interrupt)

    fmt.Println("程序执行中... 按 Ctrl + C 终止执行")

    <-c // 期待信号被触发
    fmt.Println("程序执行终止")
}

// $ go run main.go
// 输入如下 
/**
  程序执行中... 按 Ctrl + C 终止执行
  ^C 程序执行终止
*/

限度

SIGKILL 信号 和 SIGSTOP 信号无奈被捕捉,这是内核的限度,目标是为了让操作系统管制过程的生命周期。

执行命令

调用 os/exec 包即可。

例子

package main

import (
    "fmt"
    "os/exec"
)

func main() {out, err := exec.Command("date").Output()
    if err != nil {panic(err)
    }
    fmt.Printf("%s\n", out)

    out, err = exec.Command("git", "--version").Output()
    if err != nil {panic(err)
    }
    fmt.Printf("%s\n", out)
}

// $ go run main.go
// 输入如下,你的输入可能和这里的不一样
/**
  Thu Nov  3 08:14:57 CST 2022

  git version 2.30.1 (Apple Git-130)
*/

分割我

退出移动版