fileno -- Return File Number

SYNOPSIS

 #include <lcio.h>

 int fileno(FILE *f);
 
Here is the synopsis for the POSIX implementation
 #include <stdio.h>

 int fileno(FILE *f);
 

DESCRIPTION

fileno returns the file number of the stream associated with the FILE object addressed by f. If fileno is called for a file open to an HFS file, it returns the OpenEdition file descriptor for the file. If fileno is called for a socket, it returns the simulated file-descriptor number for the socket. If fileno is called for a file that is not an OpenEdition file, or is not one of stdin, stdout, or stderr, it fails and returns a - 1.

RETURN VALUE

fileno returns an integer file number. If f is 0 or is not associated with an open stream, the value returned by fileno is unpredictable. fileno of a stream that is not OpenEdition returns a - 1, except for stdin, stdout, or stderr, for which fileno returns 0, 1, or 2 respectively.

EXAMPLE

This example illustrates truncating an HFS file accessed by standard I/O. fileno obtains the file number, and then ftruncate is called to truncate the file. fflush is called before truncation to ensure that any buffered data are flushed:
     /* This example must be compiled with the posix option. */
  #include <stdio.h>
  #include <sys/types.h>
  #include <unistd.h>

  int stdtrunc(FILE *f, long pos) {
     int fd;
     int rc;

     /* Get POSIX file descriptor.           */
     fd = fileno(f);
     if (fd == -1) {
        fputs("Cannot truncate non-HFS filen", stderr);
        return -1;
     }
     rc = fflush(f);
     if (rc != 0) {
        perror("fflush error");
        return -1;
     }
     /* Truncate file to requested position. */
     rc = ftruncate(fd, pos);
     if (rc == -1)
        perror("ftruncate error");
     return rc;
  }

 

RELATED FUNCTIONS

fdopen

SEE ALSO


Copyright (c) 1998 SAS Institute Inc. Cary, NC, USA. All rights reserved.