Vì vậy, tôi có một tty (giả sử/dev/tty5) và muốn biết liệu nó hiện là một nhóm kiểm soát của một nhóm hoặc phiên xử lý hay không hiện không được công nhận. POSIX có hai hàm API tự đề xuất ở đây: tcgetpgrp() và tcgetsid(), cả hai đều chỉ hoạt động nếu người gọi có tty như kiểm soát tty - mà trong trường hợp này làm cho chúng hầu như vô dụng (và trên thực tế tôi don ' t thấy điểm của tcgetsid() ở tất cả).Làm thế nào để tìm ra liệu một TTY Linux có đang kiểm soát một nhóm quá trình
Bất kỳ ai có đề xuất làm cách nào tôi có thể phát hiện theo cách sane, từ C, cho dù thiết bị đầu cuối hiện có là thiết bị đầu cuối điều khiển của quy trình không? Tôi chỉ quan tâm đến Linux, do đó, nếu các API cụ thể của Linux là cần thiết thì tốt với tôi.
Trong câu hỏi ban đầu của tôi, tôi đã cố gắng giải thích tại sao tcgetpgrp() hầu như là vô dụng. Lý do tôi muốn điều này chỉ đơn giản là để tìm ra cho dù một getty hoặc như vậy đã hoạt động trên một thiết bị đầu cuối. Tôi không quan tâm đến các quá trình khác có TTY mở để viết (có thể xảy ra cho việc đăng nhập, yadda yadda), tôi muốn biết liệu có ai đó đang đọc/kiểm soát nó không. Và thông qua/proc a la lsof không phải là những gì tôi gọi là "sane" ... – user175104
Tất cả điều này có. Trừ khi bạn truy cập dữ liệu chế độ hạt nhân, hoặc bạn là người chủ, bạn không thể làm những gì bạn mô tả với các cuộc gọi chế độ người dùng. Không phải trong Linux. Lý do: bảo mật. Và tôi xin lỗi nếu nó xúc phạm định nghĩa của bạn về lành mạnh. Đưa nó lên với Ulrich Drepper. –