Differenze tra le versioni di "Creare un link simbolico di un file"
Riga 1: | Riga 1: | ||
Per creare un link simbolico di un file, è possibile utilizzare almeno due modalità che prevedono entrambe il richiamo di due librerie esterne. | Per creare un link simbolico di un file, è possibile utilizzare almeno due modalità che prevedono entrambe il richiamo di due librerie esterne. | ||
− | |||
==Uso della libreria ''libc.6.so''== | ==Uso della libreria ''libc.6.so''== | ||
− | Per creare un file link simbolico di un file esistente, è possibile utilizzare la funzione esterna | + | Per creare un file link simbolico di un file esistente, è possibile utilizzare la funzione esterna "symlink()" della libreria ''libc.6.so'' . |
− | <BR>Se il link simbolico e' | + | <BR>Se il link simbolico e' già esistente, la funzione "symlink()" fallisce e restituisce il valore -1 . |
E' necessario richiamare in Gambas la libreria dinamica condivisa: ''libc.6.so'' | E' necessario richiamare in Gambas la libreria dinamica condivisa: ''libc.6.so'' | ||
− | |||
Mostriamo un esempio: | Mostriamo un esempio: | ||
Riga 18: | Riga 16: | ||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
− | + | ||
Dim err As Integer | Dim err As Integer | ||
+ | |||
+ | err = symlink("<FONT Color=gray>''/percorso/del/file/esistente''</font>", "<FONT Color=gray>''/percorso/del/link/simbolico''</font>") | ||
+ | If err = -1 Then Error.Raise("Impossibile creare il link simbolico !") | ||
− | |||
− | |||
− | |||
'''End''' | '''End''' | ||
− | |||
==Uso della libreria ''libgio-2.0.so== | ==Uso della libreria ''libgio-2.0.so== | ||
Per creare un file link simbolico di un file esistente, è possibile utilizzare un paio di funzioni della libreria ''libgio-2.0.so'' . | Per creare un file link simbolico di un file esistente, è possibile utilizzare un paio di funzioni della libreria ''libgio-2.0.so'' . | ||
− | <BR>Se il link simbolico e' | + | <BR>Se il link simbolico e' già esistente, la funzione esterna "g_file_make_symbolic_link()" fallisce e restituisce il valore booleano ''False''. |
− | E' necessario richiamare in Gambas la libreria dinamica condivisa: ''libgio-2.0.so'' | + | E' necessario richiamare in Gambas la libreria dinamica condivisa: ''libgio-2.0.so.0.6400.6'' |
Mostriamo un esempio: | Mostriamo un esempio: | ||
− | Library "libgio-2.0" | + | Library "libgio-2.0:0.6400.6" |
<FONT Color=gray>' ''GFile * g_file_new_for_path (const char *path)'' | <FONT Color=gray>' ''GFile * g_file_new_for_path (const char *path)'' | ||
Riga 41: | Riga 38: | ||
Private Extern g_file_new_for_path(path As String) As Pointer | Private Extern g_file_new_for_path(path As String) As Pointer | ||
− | <FONT Color=gray>' ''gboolean g_file_make_symbolic_link (GFile *file, const char *symlink_value, GCancellable *cancellable, GError **error) | + | <FONT Color=gray>' ''gboolean g_file_make_symbolic_link (GFile *file, const char *symlink_value, GCancellable *cancellable, GError **error)'' |
' ''Creates a symbolic link named file which contains the string symlink_value.''</font> | ' ''Creates a symbolic link named file which contains the string symlink_value.''</font> | ||
Private Extern g_file_make_symbolic_link(GFile As Pointer, symlink_value As String, cancellable As Pointer, GError As Pointer) As Boolean | Private Extern g_file_make_symbolic_link(GFile As Pointer, symlink_value As String, cancellable As Pointer, GError As Pointer) As Boolean | ||
+ | |||
+ | <FONT Color=gray>' ''void g_object_unref (gpointer object)'' | ||
+ | ' ''Decreases the reference count of object.''</font> | ||
+ | Private Extern g_object_unref(gobject As Pointer) | ||
Riga 52: | Riga 53: | ||
<FONT Color=gray>' ''Genera un generico file (che diventerà poi il link simbolico):''</font> | <FONT Color=gray>' ''Genera un generico file (che diventerà poi il link simbolico):''</font> | ||
− | + | gf = g_file_new_for_path("<FONT Color=gray>''/percorso/del/futuro/link/simbolico''</font>") | |
− | + | If gf == 0 Then Error.Raise("Impossibile creare il file !") | |
− | + | ||
<FONT Color=gray>' ''Trasforma il file, appena creato, in un link simbolico del file principale qui specificato nel 2° argomento:''</font> | <FONT Color=gray>' ''Trasforma il file, appena creato, in un link simbolico del file principale qui specificato nel 2° argomento:''</font> | ||
− | + | bo = g_file_make_symbolic_link(gf, "<FONT Color=gray>''/percorso/del/file/principale''</font>", 0, 0) | |
− | + | If bo == False Then Error.Raise("Impossibile creare il file simbolico !") | |
+ | |||
+ | g_object_unref(gf) | ||
'''End''' | '''End''' | ||
− | |||
Riga 68: | Riga 70: | ||
* http://linux.die.net/man/3/symlink | * http://linux.die.net/man/3/symlink | ||
* https://developer.gnome.org/gio/stable/GFile.html#g-file-make-symbolic-link | * https://developer.gnome.org/gio/stable/GFile.html#g-file-make-symbolic-link | ||
+ | * https://docs.gtk.org/gio/ |
Versione delle 17:44, 2 gen 2022
Per creare un link simbolico di un file, è possibile utilizzare almeno due modalità che prevedono entrambe il richiamo di due librerie esterne.
Uso della libreria libc.6.so
Per creare un file link simbolico di un file esistente, è possibile utilizzare la funzione esterna "symlink()" della libreria libc.6.so .
Se il link simbolico e' già esistente, la funzione "symlink()" fallisce e restituisce il valore -1 .
E' necessario richiamare in Gambas la libreria dinamica condivisa: libc.6.so
Mostriamo un esempio:
Library "libc:6" ' int symlink(const char *__from, const char *__to) ' Make a symbolic link to FROM named TO. Private Extern symlink(__from As String, __to As String) as Integer Public Sub Main() Dim err As Integer err = symlink("/percorso/del/file/esistente", "/percorso/del/link/simbolico") If err = -1 Then Error.Raise("Impossibile creare il link simbolico !") End
Uso della libreria libgio-2.0.so
Per creare un file link simbolico di un file esistente, è possibile utilizzare un paio di funzioni della libreria libgio-2.0.so .
Se il link simbolico e' già esistente, la funzione esterna "g_file_make_symbolic_link()" fallisce e restituisce il valore booleano False.
E' necessario richiamare in Gambas la libreria dinamica condivisa: libgio-2.0.so.0.6400.6
Mostriamo un esempio:
Library "libgio-2.0:0.6400.6" ' GFile * g_file_new_for_path (const char *path) ' Constructs a GFile for a given path. Private Extern g_file_new_for_path(path As String) As Pointer ' gboolean g_file_make_symbolic_link (GFile *file, const char *symlink_value, GCancellable *cancellable, GError **error) ' Creates a symbolic link named file which contains the string symlink_value. Private Extern g_file_make_symbolic_link(GFile As Pointer, symlink_value As String, cancellable As Pointer, GError As Pointer) As Boolean ' void g_object_unref (gpointer object) ' Decreases the reference count of object. Private Extern g_object_unref(gobject As Pointer) Public Sub Main() Dim gf As Pointer Dim bo As Boolean ' Genera un generico file (che diventerà poi il link simbolico): gf = g_file_new_for_path("/percorso/del/futuro/link/simbolico") If gf == 0 Then Error.Raise("Impossibile creare il file !") ' Trasforma il file, appena creato, in un link simbolico del file principale qui specificato nel 2° argomento: bo = g_file_make_symbolic_link(gf, "/percorso/del/file/principale", 0, 0) If bo == False Then Error.Raise("Impossibile creare il file simbolico !") g_object_unref(gf) End