Tại sao rmdir / s thất bại nhưng vẫn xóa thư mục con trong cùng? [bản sao]


1

Câu hỏi này đã có câu trả lời ở đây:

Tôi đã có một cấu trúc thư mục (src / ...) được tạo bởi 7za.exe của Cygwin. Từ một dấu nhắc lệnh tôi chạy rmdir /s /q src.

Điều này dẫn đến các thông báo lỗi (diễn giải như trình bao DOS của tôi đã bị tràn từ lâu):

Không thể xóa src / test / unit / geom

Thư mục không rỗng

Duyệt để src/test/unit/geomcho thấy rằng nó thực sự trống rỗng, vì vậy tôi chạy lại lệnh rmdir. Cùng một lỗi, nhưng chỉ vào src/test/unitthay thế. Và cửa sổ Explorer của tôi hiển thị sự vắng mặt của nội dung được src/test/unit/geomthả xuống src/test/unit.

Ba rmdir thực hiện sau đó, nó đã hoàn toàn biến mất.

Đây là Windows 7 và set CYGWIN=nontsecđã được chạy. Tôi tin rằng đây là nguồn gốc của các vấn đề xây dựng trong một thời gian, nhưng cho đến bây giờ tôi vẫn chưa xác định được thủ phạm.

Tôi có thể làm gì để tránh điều này trong tương lai? Nếu nó xảy ra một lần nữa, tôi nên tìm kiếm gì về mặt xác định các khía cạnh tham nhũng của cấu trúc thư mục?


Trình thông dịch lệnh nào đã chạy như "dấu nhắc lệnh" này? CMD của Microsoft? bash? TCC? Nhân tiện, đây không phải là "vỏ DOS". DOS không có gì để làm với nó; và bạn không chạy DOS.
JdeBP

@JdeBP DOS shell trên Windows 7 == CMD
Raven

2
Không, đó không phải là vỏ DOS. Đây là một chương trình Win32. DOS không có gì để làm với nó, như tôi đã nói. Hơn nữa: tôi đã biết những gì đến trong hộp. Đó không phải là câu hỏi mà bạn đã được hỏi. Nhưng tôi cũng biết rằng bạn là kiểu người cài đặt những thứ như Cygwin. Vì vậy, lần thứ hai: Bạn đang sử dụng trình thông dịch lệnh nào?
JdeBP

Tôi bí ẩn. Tôi đã thử điều này và nó không hoạt động, sau đó tôi đã thử chính xác cùng một lệnh và nó đã hoạt động. Lỗi? Hoàn cảnh chưa biết giảm nhẹ hành vi? Đầu tiên, nó chỉ xóa toàn bộ cây thư mục con với điều kiện tất cả các thư mục đều trống (ngoài việc có các thư mục con--) nói cách khác, nó không hoạt động khi các tệp nằm trong thư mục. Sau đó, nó đã làm việc với các tập tin trong thư mục. ?!
r_alex_hall

Câu trả lời:


1

Nếu bạn có thể tái tạo vấn đề, hãy thử sử dụng Sysiternals ProcMon (hoặc FileMon) để xem những gì đang xảy ra dưới vỏ bọc. Đã được một thời gian kể từ khi tôi xem xét công cụ này nhưng IIRC, cygwin thực hiện một số bước ưa thích để tái tạo ngữ nghĩa Unix và kết quả không phải lúc nào cũng hoàn hảo.


Không có lời trách móc nào kể từ khi tôi bắt đầu tìm hiểu kỹ về vấn đề này, nhưng nếu tôi nhận được một thì tôi tin rằng ProcMon sẽ là câu trả lời.
Quạ
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.