Một chương trình có thể phát hiện nó đang chạy trong một màn hình tách ra không?


10

Tôi đang chạy một chương trình nguyền rủa tương tác trong một phiên màn hình trên phần cứng khá yếu. Hầu hết thời gian, màn hình được tháo ra. Có cách nào để chương trình này phát hiện tình huống này và về cơ bản dừng vẽ trên màn hình không?


tôi chỉ tò mò: một số lý do bạn sẽ chạy một màn hình tách ra là gì?
lưỡng cư

3
@foampile Nếu bạn không bao giờ tháo rời màn hình, thì điểm nào chạy trong màn hình?
Michael Mrozek

Câu trả lời:


8

Có một tập lệnh irssi được gọi là screen_awayđặt trạng thái đi của bạn dựa trên việc màn hình có được gắn hay không. Nó hoạt động như thế này:

Mỗi shell chạy trong một màn hình sẽ có STYbiến môi trường được đặt thành tên ổ cắm. Bạn có thể chạy screen -lsđể lấy đường dẫn nơi tất cả các ổ cắm được lưu trữ:

$ screen -ls

There are screens on:
        11824.pts-24.mmrozek    (Attached)
        2306.ssh        (Detached)
        6615.chat       (Attached)
3 Sockets in /var/run/screen/S-mmrozek.

Kiểm tra bit thực thi trên /var/run/screen/.../$STY. Nếu được đặt, màn hình được đính kèm; nếu không thì nó bị tách ra. Bạn có thể thấy từ đầu ra ở trên có hai trong số ba màn hình của tôi được đính kèm và ở đây các bit thực thi tương ứng được đặt:

$ ls -l /var/run/screen/S-mmrozek/

total 0
prwx------ 1 mmrozek mmrozek 0 Oct  5 13:04 11824.pts-24.mmrozek
prw------- 1 mmrozek mmrozek 0 Sep 23 23:45 2306.ssh
prwx------ 1 mmrozek mmrozek 0 Oct  5 12:43 6615.chat

Bạn cũng có thể tiếp tục kiểm tra đầu ra của screen -lsmột hàng có chứa $STYvà xem liệu nó kết thúc bằng (Attached)hoặc (Detached), nhưng điều đó đòi hỏi phải chạy đi chạy screenlại


1
Ha, hôm nay học được điều gì đó mới. Bất kỳ ý tưởng nào nếu bit thực thi đó có ý nghĩa gì hơn là một cờ "đính kèm / tách rời"?
jw013
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.