Unability to open generalised "file descriptor" files eg: /proc/self/fd/xxx

Đang mở
#4,092 10 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 3 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
58/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
bash, go, linux, zsh
Lĩnh vực
cli, operating-systems

Hướng nghiên cứu

Bắt đầu bằng cách tái hiện lệnh đã được báo cáo, micro <(ls), và theo dõi cách xử lý đối số tệp đầu vào từ chối /proc/self/fd/11 vì đây không phải là tệp thông thường. Xem xét các kiểm tra mở tệp hiện có và làm cho hành vi này hoạt động với các đường dẫn descriptor đã được báo cáo mà không phá vỡ việc xác thực đường dẫn thông thường; hoàn tất khi đầu vào process-substitution mở được trong micro.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

bug
Description

Many unices and unix-like OS-es support special directory in /proc (or elsewhere) to open inherited parent's proces file descriptors as files.

This is often used by advanced shell sub process redirection (bash, zsh and other more advanced shells).

Example:

$ nano <(ls) 
# "opens" directory listing as editable buffer (incoming as "descriptor" file from shell, containing actual output of `ls`)

Unfortunately with micro this fails:

: micro <(ls)                 
Error: /proc/self/fd/11 is not a regular file and cannot be opened

Press enter to continue

micro is probably doing regular file check on it's input file argument and raw file descriptor fails this.
This might be some kind of protection.

However this should be at least specialcased for file prefixes like /proc/self/fd/* on linux, to allow for shell sub-process redirection to work.

Environment
  • Version:
  • OS:
  • Terminal:
Ngôn ngữ chính
Go
Star
29.8k
Fork
1.4k
Merge trung bình
1 ngày 12 giờ
Pull request đã merge (30 ngày)
2

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của micro-editor/micro

Tất cả issue của micro-editor/micro

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.