Creare un link simbolico di un file: differenze tra le versioni
(Creata pagina con "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...") |
Nessun oggetto della modifica |
||
| (7 versioni intermedie di uno stesso utente non sono mostrate) | |||
| 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 condivisa ''libc.6.so'' . | ||
<BR>Se il link simbolico | <BR>Se il link simbolico è già esistente, la funzione esterna "symlink()" fallisce e restituisce il valore -1 . | ||
E' necessario richiamare in Gambas la libreria condivisa: "''libc.6.so'' ". | |||
Mostriamo un esempio: | Mostriamo un esempio: | ||
| Riga 17: | Riga 15: | ||
Public Sub Main() | |||
Dim err As Integer | Dim err As Integer | ||
err = symlink("<FONT Color=darkgreen>''/percorso/del/file/esistente''</font>", "<FONT Color=darkgreen>''/percorso/del/link/simbolico''</font>") | |||
If err = -1 Then Error.Raise("Impossibile creare il link simbolico !") | |||
End | |||
==Uso della libreria ''libgio-2.0 | ==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 condivisa ''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 | E' necessario richiamare in Gambas la libreria condivisa: "''libgio-2.0.so.0.8000.2'' ". | ||
Mostriamo un esempio: | Mostriamo un esempio: | ||
Library "libgio-2.0" | Library "libgio-2.0:0.8000.2" | ||
<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) | |||
Public Sub Main() | |||
Dim gf As Pointer | Dim gf 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=darkgreen>''/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=darkgreen>''/percorso/del/file/principale''</font>", 0, 0) | |||
If bo == False Then Error.Raise("Impossibile creare il file simbolico !") | |||
g_object_unref(gf) | |||
End | |||
| Riga 67: | Riga 69: | ||
* http://www.gnu.org/software/libc/manual/html_node/Symbolic-Links.html | * http://www.gnu.org/software/libc/manual/html_node/Symbolic-Links.html | ||
* http://linux.die.net/man/3/symlink | * http://linux.die.net/man/3/symlink | ||
* https:// | * https://docs.gtk.org/gio/method.File.make_symbolic_link.html | ||
Versione attuale delle 15:05, 23 giu 2024
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 condivisa libc.6.so .
Se il link simbolico è già esistente, la funzione esterna "symlink()" fallisce e restituisce il valore -1 .
E' necessario richiamare in Gambas la libreria 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 condivisa 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 condivisa: "libgio-2.0.so.0.8000.2 ".
Mostriamo un esempio:
Library "libgio-2.0:0.8000.2"
' 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