OVH Cloud OVH Cloud

liens symbolique

1 réponse
Avatar
Unknown
en C on a la fonction readlink pour voir le contenu d'un lien symbolique, ainsi j'ai un code qui fait ceci:
#include <unistd.h>
#include <stdio.h>
int main(int argc, char * argv [] ) {
char buffer[256];
int result;
if ( argc == 1 ) return -1;
result = readlink(argv[1],buffer,sizeof(buffer));
if ( result == -1 ) {
printf("Erreur de lecture\n");
return -2;
}
buffer[result]='\0';
printf("%s\n",buffer);
return 0;
}
mais existe-t'il un "writelink" afin de modifier le chemin contenu dans
les datas du lien symbolique sans avoir à le détruire puis le recréer.

1 réponse

Avatar
Laurent Wacrenier
Unknown écrit:
en C on a la fonction readlink pour voir le contenu d'un lien symbolique, ainsi j'ai un code qui fait ceci:
#include <unistd.h>
#include <stdio.h>
int main(int argc, char * argv [] ) {
char buffer[256];


Pour la taille maximale d'un lien :

pathconf(argv[1], _PC_SYMLINK_MAX)

int result;
if ( argc == 1 ) return -1;
result = readlink(argv[1],buffer,sizeof(buffer));
if ( result == -1 ) {
printf("Erreur de lecturen");


Pour afficher correctement le message d'erreur
perror("readlink");

return -2;
}
buffer[result]='';


Attention, buffer[result] peut être en ceça de la taille de buffer.

printf("%sn",buffer);
return 0;
}
mais existe-t'il un "writelink" afin de modifier le chemin contenu dans
les datas du lien symbolique sans avoir à le détruire puis le recréer.


man symlink