Xóa bài viết
Bạn có chắc chắn muốn xóa bài viết này không ?
Xóa bình luận
Bạn có chắc chắn muốn xóa bình luận này không ?
Xem process còn sống hay đã chết trong golang
Xem process còn sống hay đã chết trong golang
Hàm FindProcess
trong golang ngay cả khi process đã chết thì cũng không trả về error, thế nên để kiểm tra process còn sống hay đã chết thì chúng ta có thể làm thêm một bước là thử gửi signal(0) đến nó, nếu trả về "process already finished" thì là đã chết
// wait until process die
select {
case <-time.After(time.Duration(10) * time.Second):
return fmt.Errorf("could not kill process with pid %d after timeout", pid)
case <-time.After(time.Duration(2) * time.Second):
// find pid again
p, err := os.FindProcess(pid)
if err != nil {
return nil // seems process is die
} else {
err = p.Signal(syscall.Signal(0))
if err != nil { // "os: process is already finished" error expected
return nil
} else {
if err = p.Signal(syscall.SIGKILL); err != nil {
return err
} else {
log.Warn("could not kill process with pid %d after sending SIGKILL", pid)
}
}
}
time.Sleep(time.Duration(100) * time.Millisecond)
}
```
HoangMinhTrung 22-05-2017
Bình luận

{{ comment.user.name }}
Bỏ hay
Hay

Cùng một tác giả

24
1
Bài viết dịch từ http://arslan.io/tenusefultechniquesingo Sử dụng một GOPATH duy nhất Sử dụng đồng thời nhiều GOPATH sẽ không giúp cho hệ thống ...

20
15
(Ảnh) Mục đích của bài viết là hướng dẫn cơ bản nhất cho những ai chưa biết về docker, môi trường thực hiện là mac OS. Chuẩn bị Cài đặt virtua...

19
4
Giới thiệu (Ảnh) Về cơ bản kafka là hệ thống message pub/sub phân tán mà có khả năng scale rất tốt. Message của kafka được lưu trên đĩa cứng, đồ...
Bài viết liên quan

16
1
Crawl dữ liệu Crawl là một vấn đề hay gặp trong quá trình làm software. Ví dụ lấy tin tức, tin giảm giá, vé xem phim... là những dạng của crawl. Mộ...