EXTENDEDFILE(7) Standards, Environments, and Macros EXTENDEDFILE(7)
NAME
extendedFILE - enable extended FILE facility usage
SYNOPSIS
$ ulimit
-n N_file_descriptors $ LD_PRELOAD_32=/usr/lib/extendedFILE.so.1
application [
arg...]
DESCRIPTION
The
extendedFILE.so.1 is not a library but an enabler of the extended
FILE facility.
The extended FILE facility allows 32-bit processes to use any valid
file descriptor with the standard I/O (see
stdio(3C)) C library
functions. Historically, 32-bit applications have been limited to
using the first 256 numerical file descriptors for use with standard
I/O streams. By using the extended FILE facility this limitation is
lifted. Any valid file descriptor can be used with standard I/O. See
the NOTES section of
enable_extended_FILE_stdio(3C).
The extended FILE facility is enabled from the shell level before an
application is launched. The file descriptor limit must also be
raised. The syntax for raising the file descriptor limit is
$ ulimit -n
max_file_descriptors $ LD_PRELOAD_32=/usr/lib/extendedFILE.so.1
application [
arg...]
where
max_file_descriptors is the maximum number of file descriptors
desired. See
limit(1). The maximum value is the same as the maximum
value for
open(2).
ENVIRONMENT VARIABLES
The following environment variables control the behavior of the
extended FILE facility.
_STDIO_BADFD This variable takes an integer representing
the lowest file descriptor, which will be made
unallocatable. This action provides a
protection mechanism so that applications that
abuse interfaces do not experience silent data
corruption. The value must be between 3 and
255 inclusive.
_STDIO_BADFD_SIGNAL This variable takes an integer or string
representing any valid signal. See
signal.h(3HEAD) for valid values or strings.
This environment variable causes the specified
signal to be sent to the application if
certain exceptional cases are detected during
the use of this facility. The default signal
is
SIGABRT.
EXAMPLES
Example 1: Limit the number of file descriptors and FILE standard I/O
structures.
The following example limits the number of file descriptors and FILE
standard I/O structures to 1000.
$ ulimit -n 1000
$ LD_PRELOAD_32=/usr/lib/extendedFILE.so.1 application [arg...]
Example 2: Enable the extended FILE facility.
The following example enables the extended FILE facility. See
enable_extended_FILE_stdio(3C) for more examples.
$ ulimit -n 1000
$ _STDIO_BADFD=100 _STDIO_BADFD_SIGNAL=SIGABRT \
LD_PRELOAD_32=/usr/lib/extendedFILE.so.1 \
application [arg ...]
Example 3: Set up the extended FILE environment and start the
application.
The following shell script first sets up the proper extended FILE
environment and then starts the application:
#!/bin/sh
if [ $# = 0 ]; then
echo "usage: $0 application [arguments...]"
exit 1
fi
ulimit -n 1000
# _STDIO_BADFD=196; export _STDIO_BADFD
# _STDIO_BADFD_SIGNAL=SIGABRT; export _STDIO_BADFD_SIGNAL
LD_PRELOAD_32=/usr/lib/extendedFILE.so.1; export LD_PRELOAD_32
"$@"
FILES
/usr/lib/extendedFILE.so.1 enabling library
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Stable |
+--------------------+-----------------+
|MT-Level | Safe |
+--------------------+-----------------+
SEE ALSO
limit(1),
open(2),
enable_extended_FILE_stdio(3C),
fdopen(3C),
fopen(3C),
popen(3C),
stdio(3C),
signal.h(3HEAD),
attributes(7)WARNINGS
The following displayed message
Application violated extended FILE safety mechanism.
Please read the man page for extendedFILE.
Aborting
is an indication that your application is modifying the internal file
descriptor field of the
FILE structure from standard I/O. Continued
use of this extended FILE facility could harm your data. Do not use
the extended FILE facility with your application.
April 18, 2006 EXTENDEDFILE(7)