在Golang中,你可以使用标准库中的"os"和"syscall"包来访问和控制Linux资源。这里有一些示例,展示了如何在Golang中利用Linux资源:
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())
}
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))
}
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))
}
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资源。你可以根据自己的需求进行修改和扩展。