[Overview][Constants][Types][Procedures and functions][Variables] |
Duplicate one filehandle to another
Source position: line 0
function Dup2( |
oldfile: LongInt; |
newfile: LongInt |
):Boolean; |
var oldfile: text; |
var newfile: text |
):Boolean; |
var oldfile: ; |
var newfile: |
):Boolean; |
Makes NewFilean exact copy of OldFile, after having flushed the buffer of OldFilein the case of text or untyped files.
NewFilecan be an assigned file. If newfilewas open, it is closed first. Due to the buffering mechanism of Pascal, this has not the same functionality as the dup2call in C. The internal Pascal buffers are not the same after this call, but when the buffers are flushed (e.g. after output), the output is sent to the same file. Doing an lseek will, however, work as in C, i.e. doing a lseek will change the fileposition in both files.
The function returns Trueif succesful, false otherwise.
In case of error, Linuxerroris used to report errors.
|
Duplicate a file handle |
program Example31; { Program to demonstrate the Dup function. } uses oldlinux; var f : text; i : longint; begin Assign (f,'text.txt'); Rewrite (F); For i:=1 to 10 do writeln (F,'Line : ',i); if not dup2 (output,f) then Writeln ('Dup2 Failed !'); writeln ('This is written to stdout.'); writeln (f,'This is written to the dup file, and flushed'); flush(f); writeln; { Remove file. Comment this if you want to check flushing.} Unlink ('text.txt'); end.