Archiv verlassen und diese Seite im Standarddesign anzeigen : Unix: Link oder Datei ?
Hallo,
wie kann man ermitteln ob eine Datei wirklich eine Datei ist, oder ein Link auf eine andere Datei.
Keiner meiner Versuche hat bisher zum Erfolg geführt.
Vielleicht kann mir da jemand helfen. Vielen Dank.
MfG Neo
es gibt ja 2 arten von links: hardlinks und softlinks
hardlinks sind quasi "die datei", ohne hardlink existiert eine datei nicht
softlinks kannste über die attribute erkennen, da hat ein softlink, afaik ein l (el) an erster stelle
Hallo MrEasy,
danke für die schnelle Antwort.
Allerdings weiß ich nicht wie man die Attribute mit C auswerten
kann. In PHP gibt es eine Funktion fileperms() die die Berechtigung
zurückgibt. In C habe ich etwas ähnliches aber noch nicht gefunden.
Wie bekommt man den den Dateinamen der Datei auf den der Softlink zeigt?
MfG Neo
Hi,
hier hab ich dir ein Beispiel, aber den Code nicht zu genau anschauen, bin kein C-Guru ;)
Gruss
lobo
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#define MAXBUFFER 255
int main(int argc, char **argv)
{
char buffer[MAXBUFFER] = {0};
struct stat attr;
if(argc < 1)
exit(EXIT_FAILURE);
/* schreibt dateiattribute in struktur variable*/
if(lstat(argv[1], &attr) == -1)
exit(EXIT_FAILURE);
/* testen ob datei ein symlink ist */
if(!S_ISLNK(attr.st_mode)) {
printf("Datei ist kein symlink!\n");
exit(EXIT_FAILURE);
}
/* verweis auf datei auslesen */
if((readlink(argv[1],buffer,MAXBUFFER - 1)) == -1)
exit(EXIT_FAILURE);
printf("symlink zeigt auf: %s\n",buffer);
return(EXIT_SUCCESS);
}
Hallo,
danke, ich denke genau das habe ich gesucht. Ich probiers aus sobald ich wieder an einem Unix-Redchner sitze.
MfG Neo
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.