FpOpen function
Open file and return file descriptor.
Declaration
function FpOpen(path: PAnsiChar; flags: cint; Mode: TMode): cintDescription
FpOpen opens a file in
Path with flags
flags
and mode
Mode
One of the following:
- O_RdOnly
- File is opened Read-only
- O_WrOnly
- File is opened Write-only
- O_RdWr
- File is opened Read-Write
The flags may beOR-ed with one of the following constants:
- O_Creat
- File is created if it doesn't exist.
- O_Excl
- If the file is opened with
O_Creatand it already exists, the call will fail. - O_NoCtty
- If the file is a terminal device, it will NOT become the process' controlling terminal.
- O_Trunc
- If the file exists, it will be truncated.
- O_Append
- the file is opened in append mode. Before each write, the file pointer is positioned at the end of the file.
- O_NonBlock
- The file is opened in non-blocking mode. No operation on the file descriptor will cause the calling process to wait till.
- O_NDelay
- Idem as
O_NonBlock - O_Sync
- The file is opened for synchronous IO. Any write operation on the file will not return until the data is physically written to disk.
- O_NoFollow
- if the file is a symbolic link, the open fails. (Linux 2.1.126 and higher only)
- O_Directory
- if the file is not a directory, the open fails. (Linux 2.1.126 and higher only)
Path can be of type
PChar or
String.
The optional
mode argument specifies the permissions to set when opening
the file. This is modified by the umask setting. The real permissions are
Mode and not umask.
The return value of the function is the file descriptor, or a negative
value if there was an error.
Errors
Extended error information can be retrieved using fpGetErrno.
See also
Example: ex19
Program Example19;
{ Program to demonstrate the fpOpen, fpwrite and fpCLose functions. }
Uses BaseUnix;
Const Line : String[80] = 'This is easy writing !';
Var FD : Cint;
begin
FD:=fpOpen ('Test.dat',O_WrOnly or O_Creat);
if FD>0 then
begin
if length(Line)<>fpwrite (FD,Line[1],Length(Line)) then
Writeln ('Error when writing to file !');
fpClose(FD);
end;
end.An experiment, built from development snapshots. Not the official Free Pascal or Lazarus documentation.
