Go

记一次go run main.go kill 问题

2022-03-29  本文已影响0人  wuhan_goer

问题描述:

写了个脚本在执行,如下:

package main

import (
    "fmt"
    "io"
    "os"
    "time"
)

func main() {
    f, err := os.OpenFile("test.txt", os.O_APPEND|os.O_WRONLY, os.ModeAppend)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer f.Close()
    for {
        time.Sleep(time.Second)
        _, err := io.WriteString(f, "1111")
        if err != nil {
            fmt.Printf("err %v", err)
        }
    }
}

向一个文件写入数据。用go run main.go &


image.png

此时我们ps -ef | grep go 查看有俩个进程在跑,12888的父进程是12867
也就是我们刚go run main.go返回的那个进程id


image.png
所以当我们kill 12867 的时候,会发现程序还在执行,数据还在写入test.txt
此时12888的父进程是1,程序依旧再执行,刚kill的其实只是go run的命令,

所以俩个进程都要kill 才行

image.png
上一篇 下一篇

猜你喜欢

热点阅读