Differenze tra le versioni di "Creat ()"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "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 riscriv...")
 
Riga 1: Riga 1:
 
La funzione '''''creat( )''''', dichiarata nel file header di sistema "''/usr/include/fcntl.h''"
 
La funzione '''''creat( )''''', dichiarata nel file header di sistema "''/usr/include/fcntl.h''"
 
  int creat (const char *__file, mode_t __mode)
 
  int creat (const char *__file, mode_t __mode)
crea un nuovo file o ne riscrive uno esistente.
+
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.

Versione delle 08:07, 29 lug 2016

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


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