2009-08-18 27 views
11

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?

+0

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

+2

Nó được gọi là búa! : P –

+0

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

Trả lời

11

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.

+1

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. –

+2

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

+5

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. –

12

Chức năng chdir(). Để biết thêm thông tin, hãy sử dụng man chdir.

0
#include "stdafx.h" 
#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 

int main(int argc, char* argv[]) 
{ 
    system("C:\\windows\\notepad.exe"); 
    chdir("C:\\windows\\desktop"); 
    return 0; 
} 

Theo this

+2

Bạn đã kiểm tra điều này? – alk

8

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.

Các vấn đề liên quan