温馨提示×

Golang如何利用Linux资源

小樊
50
2025-10-07 20:52:09
栏目: 编程语言

在Golang中,你可以使用标准库中的"os"和"syscall"包来访问和控制Linux资源。这里有一些示例,展示了如何在Golang中利用Linux资源:

  1. 获取系统信息:
package main

import (
	"fmt"
	"os"
	"runtime"
)

func main() {
	fmt.Println("操作系统:", runtime.GOOS)
	fmt.Println("架构:", runtime.GOARCH)
	fmt.Println("CPU数量:", runtime.NumCPU())
	fmt.Println("当前工作目录:", os.Getwd())
}
  1. 文件操作:
package main

import (
	"fmt"
	"io/ioutil"
	"os"
)

func main() {
	// 创建文件
	file, err := os.Create("test.txt")
	if err != nil {
		fmt.Println("创建文件失败:", err)
		return
	}
	defer file.Close()

	// 写入文件
	_, err = file.WriteString("Hello, Golang!")
	if err != nil {
		fmt.Println("写入文件失败:", err)
		return
	}

	// 读取文件
	content, err := ioutil.ReadFile("test.txt")
	if err != nil {
		fmt.Println("读取文件失败:", err)
		return
	}
	fmt.Println("文件内容:", string(content))
}
  1. 进程管理:
package main

import (
	"fmt"
	"os"
	"os/exec"
)

func main() {
	// 获取当前进程信息
	fmt.Println("当前进程ID:", os.Getpid())
	fmt.Println("父进程ID:", os.Getppid())

	// 创建子进程
	cmd := exec.Command("ls", "-l")
	output, err := cmd.Output()
	if err != nil {
		fmt.Println("执行命令失败:", err)
		return
	}
	fmt.Println("命令输出:\n", string(output))
}
  1. 网络编程:
package main

import (
	"fmt"
	"net"
)

func main() {
	// 监听TCP端口
	listener, err := net.Listen("tcp", ":8080")
	if err != nil {
		fmt.Println("监听端口失败:", err)
		return
	}
	defer listener.Close()

	fmt.Println("服务器已启动,监听端口: 8080")

	for {
		// 接受客户端连接
		conn, err := listener.Accept()
		if err != nil {
			fmt.Println("接受连接失败:", err)
			continue
		}

		// 处理客户端请求
		go handleRequest(conn)
	}
}

func handleRequest(conn net.Conn) {
	defer conn.Close()

	// 读取客户端发送的数据
	buffer := make([]byte, 1024)
	n, err := conn.Read(buffer)
	if err != nil {
		fmt.Println("读取数据失败:", err)
		return
	}

	// 向客户端发送响应
	response := fmt.Sprintf("收到消息: %s", string(buffer[:n]))
	conn.Write([]byte(response))
}

这些示例展示了如何在Golang中使用标准库来访问和控制Linux资源。你可以根据自己的需求进行修改和扩展。

0