Cách dễ nhất là đặt chương trình của bạn ở nơi đã biết trước (/ bin,/usr/bin, v.v.). Nếu không, bạn có thể sử dụng argv [0], loại bỏ tên chương trình (phần cuối), và sử dụng nó làm thư mục làm việc của bạn để tiền tố tất cả các đường dẫn tương đối (nếu bạn muốn đường dẫn tương đối liên quan đến vị trí của chương trình).
Ngoài ra, bạn có thể xác định đường dẫn chương trình của mình bằng phương pháp trên (sử dụng argv[0]
), sau đó gọi số chdir()
bằng thư mục này. Tất cả các đường dẫn tương đối từ đó trở đi sẽ liên quan đến vị trí của chương trình.Tuy nhiên, lưu ý rằng trong trường hợp này, bạn phải xác định xem argv[0]
có giữ đường dẫn tuyệt đối hay không. Nếu không, bạn phải nhận được thư mục làm việc hiện tại (getcwd()
) và sau đó nối thêm phần thư mục của argv[0]
. Tuy nhiên, lưu ý rằng việc thay đổi thư mục công việc hiện tại. không phải là một ý tưởng tốt, thông thường, như thể người dùng cung cấp cho bạn đường dẫn tệp làm đối số, nó sẽ liên quan đến thư mục công việc hiện tại của bạn, không liên quan đến nơi chương trình được lưu trữ.
Một số ví dụ: Hãy tưởng tượng chương trình của bạn sống ở /usr/bin
. Bạn có thể gọi chương trình của bạn như:
/usr/bin/myprog
(đó sẽ là argv[0]
tỉa tên thực thi và bạn có dir của bạn..) Hoặc là, nói, trong /usr
:
./bin/myprog
Bây giờ, argv[0]
là một đường dẫn tương đối. Bạn phải thêm một thư mục làm việc hiện tại (/usr
) vào thư mục argv[0]
: /usr/./bin/myprog
và sau đó lại cắt bớt tên thực thi. Thư mục sẽ lại là /usr/bin
.
Nguồn
2010-10-21 13:44:29
thể trùng lặp của [thư mục chạy chương trình trên Linux ?] (http://stackoverflow.com/questions/737996/directory-of-running-program-on-linux) – ereOn
Điều này có thể đạt được tuy nhiên, bạn có chắc chắn bạn muốn điều này? Trên Linux, mỗi loại tệp có các thư mục chuyên dụng của nó: cấu hình thường đi tới '/ etc /' hoặc '~/.my_program', hình ảnh và tài liệu tới'/usr/share', v.v. Ngoài ra, hầu hết người dùng sẽ mong đợi chương trình của bạn chạy trong thư mục hiện tại. – ereOn
Xem thêm http: //www.dreamincode.net/forums/topic/98402-directory-of-running-program/ –