Unix'teki C'deki göreli yolu mutlak yola nasıl dönüştürebilirim? Bunun için uygun bir sistem işlevi var mı? Windows'taDosyaların mutlak yolunu alma
işi yapan bir GetFullPathName
işlevi vardır, ama ben Unix üzerinde benzer bir şey ...
Unix'teki C'deki göreli yolu mutlak yola nasıl dönüştürebilirim? Bunun için uygun bir sistem işlevi var mı? Windows'taDosyaların mutlak yolunu alma
işi yapan bir GetFullPathName
işlevi vardır, ama ben Unix üzerinde benzer bir şey ...
Kullanım realpath() bulamadık. Pathname gelen
realpath()
fonksiyonu elde edemez, olan çözünürlük isimler aynı dosya, '..
' '.
' dahil veya sembolik bağlantılar etmediğinifile_name
, mutlak yol adı ile gösterilen . oluşturulan yol adı, tarafından işaret edilen arabelleğe en fazla{PATH_MAX}
bayt kadar bir sıfır sonlandırılmış dizgisi olarak depolanacaktır.
resolved_name
bir boş gösterici ise,realpath()
davranışı uygulama tanımlı olduğu.
Aşağıdaki örnek symlinkpath bağımsız değişken tarafından tanımlanan dosya için bir mutlak yolunu oluşturur. Oluşturulan yol adı, gerçek yol dizisinde saklanan .
#include <stdlib.h>
...
char *symlinkpath = "/tmp/symlink/file";
char actualpath [PATH_MAX+1];
char *ptr;
ptr = realpath(symlinkpath, actualpath);
Ayrıca "getcwd" denemek
#include <unistd.h>
char cwd[100000];
getcwd(cwd, sizeof(cwd));
std::cout << "Absolute path: "<< cwd << "/" << __FILE__ << std::endl;
Sonuç:
Absolute path: /media/setivolkylany/WorkDisk/Programming/Sources/MichailFlenov/main.cpp
Test ortamı:
[email protected]$/ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 8.6 (jessie)
Release: 8.6
Codename: jessie
[email protected]$/ uname -a
Linux localhost 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) x86_64 GNU/Linux
[email protected]$/ g++ --version
g++ (Debian 4.9.2-10) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
'artı bir' o thuogh, gerekli değildir Zarar vermeyecek. Windows'taki –
'GetFullPathName', varolan olmayan dosyalar için de çalışır. 'realpath' varoluşun yolunu gerektirir. Bir yol veya dosya oluşturmak istediğinizde bu tür bir berbat. – Joakim