Bài này có thể giúp. Đề xuất là:
- nền quá trình (với Ctrl-Z, sau đó bg )
- chạy disown -h% [jobid] (có thể là bash-ism, vì vậy bạn sẽ phải dịch cho tcsh)
Tất nhiên, tin xấu là bg sẽ cần phải được thực hiện trong cùng một shell mà quá trình đang chạy trong ... nhưng ... nó có thể đã được làm nền.
Tin xấu thực sự là cuộc gọi từ chối có thể cần phải được thực hiện trong cùng một vỏ. Trong trường hợp đó, vâng, bạn đang say sưa. Nhưng tôi không chắc chắn, có lẽ root có thể buộc ngắt kết nối nó.
Hừm. Tin tốt có thể có - tcsh sẽ tự động từ chối :
Nếu tcsh thoát bất thường, nó sẽ tự động loại bỏ các công việc đang chạy trong nền khi nó thoát.
Vì vậy, nếu quá trình dài hạn của bạn đã được nền tảng, việc giết cha mẹ tcsh của nó sẽ cho phép nó tiếp tục. Quá trình bây giờ bị ngắt kết nối từ thiết bị đầu cuối bắt đầu. (Nếu không, hãy xem "tin xấu" ở trên.)
Thật không may, nó không phải là màn hình, vì vậy không có kết nối lại thực sự. Bạn có thể giả mạo nó bằng gdb có thể (một lần nữa, từ liên kết đầu tiên):
[...] Với một số hack bẩn, không thể mở lại quy trình 'stdout / stderr / stdin.
Vì vậy, bạn vẫn có thể tạo một cửa sổ màn hình trống (ví dụ chạy chế độ ngủ).
Và sau đó sử dụng gdb để đính kèm vào quy trình, thực hiện một số cuộc gọi close (0)
gọi close (1)
gọi close (2)
gọi open ("/ dev / pts / xx", ...)
gọi dup (0)
gọi dup (0)
tách ra
Đầu ra của quá trình sẽ đi đến màn hình. Nó sẽ không được gắn vào thiết bị đầu cuối màn hình đó, vì vậy, ví dụ [sic] sẽ giết lệnh "ngủ", không phải là quá trình, nhưng điều đó có thể đủ cho OP.
Tôi tự hỏi liệu không nên có "gọi dup (1)" và "gọi dup (2)" trong quá trình đó ...