» Go语言快速入门 » 3. 高级篇 » 3.6 操作系统

操作系统

os 包提供了一个跨平台的操作系统功能交互接口。

启动进程

你可以使用 os/exec 包启动进程,该包提供了启动外部进程的方法。

package main

import (
	"fmt"
	"os/exec"
)

func main() {
	// 要执行的命令
	cmd := exec.Command("echo", "Hello, World!")

	// 运行命令并捕获其输出
	output, err := cmd.CombinedOutput()
	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	fmt.Println("Output:", string(output))
}

信号

你可以使用 os/signal 包处理信号。信号是操作系统通知进程发生特定事件的一种方式,例如用户中断(Ctrl+C)。

package main

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

func main() {
	signalChannel := make(chan os.Signal, 1)

	// 监听如下信号
	signal.Notify(signalChannel, syscall.SIGINT, syscall.SIGTERM)

	fmt.Println("Application is running. Press Ctrl+C to exit.")

	// 阻塞,直到接收到信号
	signalReceived := <-signalChannel
	fmt.Printf("Received signal: %v\n", signalReceived)

	fmt.Println("Cleaning up and exiting.")
}

退出

os.Exit 函数允许你以指定的退出码终止程序。

package main

import (
	"fmt"
	"os"
)

func main() {
	fmt.Println("Before os.Exit")

	// 以状态码 1 退出
	os.Exit(1)

	// 这行代码将不会被执行
	fmt.Println("After os.Exit")
}