问题描述:
写了个脚本在执行,如下:
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 &
此时我们ps -ef | grep go 查看有俩个进程在跑,12888的父进程是12867
也就是我们刚go run main.go返回的那个进程id
所以当我们kill 12867 的时候,会发现程序还在执行,数据还在写入test.txt
此时12888的父进程是1,程序依旧再执行,刚kill的其实只是go run的命令,
所以俩个进程都要kill 才行
- go run不会在当前目录生成任何[可执行文件],可执行文件被放在临时文件中被执行,所以有个/tmp/go-build 的进程