Xem process còn sống hay đã chết trong golang
TIL
489
golang
39
Go
41
White

Hoàng Minh Trung viết ngày 22/05/2017

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


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Hoàng Minh Trung

21 bài viết.
53 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
17 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...
Hoàng Minh Trung viết hơn 2 năm trước
17 15
White
16 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 ...
Hoàng Minh Trung viết hơn 1 năm trước
16 1
White
13 0
Bài viết dịch từ https://github.com/luciotato/golangnotes/blob/master/OOP.md Mục đích bài viết Học golang dễ dàng hơn với những kiến thức bạn đ...
Hoàng Minh Trung viết hơn 1 năm trước
13 0
Bài viết liên quan
White
17 0
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ộ...
Thach Le viết gần 2 năm trước
17 0
White
7 2
Makefile thực hiện một số thao tác thường dùng trong Go Khi làm project Go mình thường tạo một file Makefile dạng này: Lưu ý nhớ thay thành tên m...
Huy Trần viết hơn 1 năm trước
7 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
21 bài viết.
53 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!