Differenze tra le versioni di "Creat ()"

Da Gambas-it.org - Wikipedia.
 
Riga 3: Riga 3:
 
crea un nuovo file o ne riscrive uno esistente. Viene restituito un valore di tipo ''Intero'' che rappresenta il ''descrittore'' del file creato.
 
crea un nuovo file o ne riscrive uno esistente. Viene restituito un valore di tipo ''Intero'' che rappresenta il ''descrittore'' del file creato.
  
La funzione ''creat( )'' crea file, ma non può aprire il file esistente. Se si utilizza ''creat( )'' su un file esistente, il file verrà troncato e può essere solo scritto.
+
La funzione "creat()" crea file, ma non può aprire il file esistente. Se si utilizza "creat()" su un file esistente, il file verrà troncato e può essere solo scritto.
  
 
Il secondo parametro è intero che rappresenta i permessi di accesso attribuiti al file. I valori, che rappresentano tali permessi, sono indicati nei file header:
 
Il secondo parametro è intero che rappresenta i permessi di accesso attribuiti al file. I valori, che rappresentano tali permessi, sono indicati nei file header:
Riga 33: Riga 33:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim mode, fd As Integer
 
   Dim mode, fd As Integer
 
    
 
    
  mode = S_IRUSR Or S_IWUSR Or S_IRGRP Or S_IROTH
+
  mode = S_IRUSR Or S_IWUSR Or S_IRGRP Or S_IROTH
 
    
 
    
  fd = creat("/tmp/prova", mode)
+
  fd = creat("/tmp/prova", mode)
  If fd < 0 Then Error.Raise("Impossibile creare il file !")
+
  If fd < 0 Then Error.Raise("Impossibile creare il file !")
 
    
 
    
  close_C(fd)
+
  close_C(fd)
 
    
 
    
  '''End'''
+
  End
 
 
  
  

Versione attuale delle 07:17, 13 giu 2024

La funzione creat(), dichiarata nel file header di sistema "/usr/include/fcntl.h"

int creat (const char *__file, mode_t __mode)

crea un nuovo file o ne riscrive uno esistente. Viene restituito un valore di tipo Intero che rappresenta il descrittore del file creato.

La funzione "creat()" crea file, ma non può aprire il file esistente. Se si utilizza "creat()" su un file esistente, il file verrà troncato e può essere solo scritto.

Il secondo parametro è intero che rappresenta i permessi di accesso attribuiti al file. I valori, che rappresentano tali permessi, sono indicati nei file header:

  • /usr/include/x86_64-linux-gnu/bits/stat.h
  • /usr/include/x86_64-linux-gnu/sys/stat.h

(vedi anche: /usr/include/cpio.h)


Volendola utilizzare in Gambas, bisognerà dichiararla con Extern, nonché bisognerà dichiarare la libreria di C: libc.so.6, nella quale la funzione è contenuta:

Private Extern creat(__file As String, __mode As Integer) As Integer In "libc:6"

Mostriamo un semplice esempio, nel quale viene creato un file con permessi di lettura e scrittura per l'utente, e di sola lettura per il gruppo e gli altri.

Library "libc:6"

Private S_IRUSR As Integer = 256
Private S_IWUSR As Integer = 128
Private S_IRGRP As Integer = 32
Private S_IWGPR As Integer = 16
Private S_IROTH As Integer = 4
Private S_IWOTH As Integer = 2

' int creat (const char *__file, mode_t __mode)
' Create and open FILE, with mode MODE.
Private Extern creat(__file As String, __mode As Integer) As Integer

' int close(int _fd)
' Close the file descriptor FD.
Private Extern close_C(_fd As Integer) As Integer Exec "close"


Public Sub Main()
 
 Dim mode, fd As Integer
  
 mode = S_IRUSR Or S_IWUSR Or S_IRGRP Or S_IROTH
  
 fd = creat("/tmp/prova", mode)
 If fd < 0 Then Error.Raise("Impossibile creare il file !")
  
 close_C(fd)
  
End


Riferimenti