Không nói chung, không có. [Chỉnh sửa: kể từ Linux 3.11 hiện có linkat
; xem safsaf32's answer. Điều này không hoạt động trên các hệ thống POSIX nói chung vì POSIX linkat
chỉ giới hạn ở các thư mục.] Có những cân nhắc về bảo mật ở đây: ai đó có thể chuyển cho bạn một bộ mô tả tệp mở mà bạn không thể tự mình làm như bình thường
mkdir lock; chmod 700 lock
echo secret contents > lock/in
sudoish cmd < lock/in
Ở đây cmd
chạy với tư cách người dùng không có quyền đối với open
tệp đầu vào (lock/in
) theo tên nhưng vẫn có thể đọc từ đó. Nếu cmd
có thể tạo tên mới trên cùng một hệ thống tệp, nó có thể chuyển nội dung tệp vào quy trình sau. (Rõ ràng là nó có thể sao chép những nội dung đó, do đó, vấn đề này là nhiều hơn "vượt qua nội dung trên do nhầm lẫn" điều hơn là "chuyển nội dung trên, có mục đích".)
Điều đó nói rằng, mọi người đã tìm ra cách "relinking" các tập tin bằng inode/vnode nội bộ (nó khá dễ dàng để làm bên trong hầu hết các hệ thống tập tin), vì vậy bạn có thể làm cho hệ thống riêng của bạn gọi cho nó. Bộ mô tả phải đề cập đến một tập tin thực sự trên điểm lắp thích hợp, tất nhiên - không có cách nào "tiếp tục" một đường ống hoặc ổ cắm hoặc thiết bị để trở thành một tập tin thông thường.
Nếu không, bạn bị mắc kẹt với "tín hiệu bắt và dọn dẹp và hy vọng điều tốt nhất", hoặc mẹo tương tự ", tắt một tiến trình con, chạy nó và nếu thành công/thất bại, hãy di chuyển/làm sạch thích hợp- lên hành động ".
Chỉnh sửa để thêm chú thích lịch sử: trên lock
ví dụ là không đặc biệt tốt, nhưng trở lại trong những ngày của V6 Unix, MDQS sử dụng một phiên bản fancier của thủ thuật này. Các bit và các phần của MDQS tồn tại dưới nhiều hình thức khác nhau ngày nay.
câu hỏi hay, +1 – nsd