EXTENDEDFILE(7) Standards, Environments, and Macros EXTENDEDFILE(7)


extendedFILE - enable extended FILE facility usage


$ ulimit -n N_file_descriptors
$ LD_PRELOAD_32=/usr/lib/extendedFILE.so.1 application [arg...]


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

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).


The following environment variables control the behavior of the extended
FILE facility.

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

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.


Example 1: Limit the number of file descriptors and FILE standard I/O


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
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:

if [ $# = 0 ]; then
echo "usage: $0 application [arguments...]"
exit 1
ulimit -n 1000
LD_PRELOAD_32=/usr/lib/extendedFILE.so.1; export LD_PRELOAD_32


enabling library


See attributes(7) for descriptions of the following attributes:

|Interface Stability | Stable |
|MT-Level | Safe |


limit(1), open(2), enable_extended_FILE_stdio(3C), fdopen(3C), fopen(3C),
popen(3C), stdio(3C), signal.h(3HEAD), attributes(7)


The following displayed message

Application violated extended FILE safety mechanism.
Please read the man page for extendedFILE.

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.

illumos April 18, 2006 EXTENDEDFILE(7)