Có cách nào mà tôi có thể thay đổi đến bất kỳ thư mục bằng cách thực hiện một chương trình C ?Có cách nào để thay đổi thư mục bằng ngôn ngữ C không?
Trả lời
Tùy thuộc vào hệ điều hành của bạn có những cuộc gọi khác nhau để thay đổi thư mục hiện hành. Những thông thường sẽ chỉ thay đổi thư mục hiện tại của quá trình chạy tệp thực thi. Sau khi quá trình thoát, bạn sẽ nằm trong thư mục bạn đã bắt đầu.
Cảm ơn Peter, vì vậy có vẻ như sự thay đổi vật lý của thư mục sẽ không diễn ra. –
Thư mục hiện tại là một phần của trạng thái của một quá trình (như các tệp mở, bản đồ bộ nhớ, biến môi trường ...). Thông thường một quá trình không thể thay đổi trạng thái của một tiến trình khác (thông thường, trình gỡ rối và vân vân có thể có các đặc quyền đặc biệt, nhưng đó là một câu chuyện khác). – AProgrammer
Và đây là lý do tại sao 'cd' là một nội trang hệ vỏ, không phải là tệp thực thi riêng biệt. –
Chức năng chdir()
. Để biết thêm thông tin, hãy sử dụng man chdir
.
Có, chức năng chdir().
Vâng, lệnh POSIX để thay đổi thư mục hiện hành là:
chdir(const char*path);
chdir()
chỉ thay đổi thư mục làm việc hiện tại của quy trình chứ không thay đổi ngữ cảnh mà bạn đang làm việc. Giả sử bạn thực hiện một chương trình trong thiết bị đầu cuối và thư mục hiện tại của bạn là /home/Documents
, sau đó về việc thực hiện một chương trình có các dòng sau
chdir("cd ../Downloads");
sẽ không thay đổi thư mục làm việc của thiết bị đầu cuối, nhưng thay đổi đó của quá trình duy nhất.
Bạn đang tìm kiếm 'cd'? Hoặc bạn đang tìm kiếm một cách để thực sự thiết lập một thư mục hoạt động trong C? – Eric
Nó được gọi là búa! : P –
Câu hỏi này thường được đưa ra như một bài tập cho sinh viên dựa vào các hệ điều hành giống Unix. Nếu đúng như vậy, hãy chú ý đến những gì Peter nói về * quy trình nào * có thể và không thể bị ảnh hưởng. – dmckee