📄 autobook_119.html
字号:
<HTML><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><!-- Created on September, 12 2004 by texi2html 1.64 --><!-- Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author) Karl Berry <karl@freefriends.org> Olaf Bachmann <obachman@mathematik.uni-kl.de> and many others.Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>Send bugs and suggestions to <texi2html@mathematik.uni-kl.de> --><HEAD><TITLE>Autoconf, Automake, and Libtool: Cross-Unix Function Calls</TITLE><META NAME="description" CONTENT="Autoconf, Automake, and Libtool: Cross-Unix Function Calls"><META NAME="keywords" CONTENT="Autoconf, Automake, and Libtool: Cross-Unix Function Calls"><META NAME="resource-type" CONTENT="document"><META NAME="distribution" CONTENT="global"><META NAME="Generator" CONTENT="texi2html 1.64"><script language="Javascript"><!-- // Check the browser version. function checkVersion() { if (navigator.appVersion.charAt(0)>=3) return true; if (navigator.appVersion.charAt(0)>=4) return true; else return false; } if (checkVersion()) { homeon = new Image(); homeon.src = "homeon.png"; homeoff = new Image(); homeoff.src = "home.png"; tocon = new Image(); tocon.src = "tocon.png"; tocoff = new Image(); tocoff.src = "toc.png"; indexon = new Image(); indexon.src = "indexon.png"; indexoff = new Image(); indexoff.src = "index.png"; helpon = new Image(); helpon.src = "helpon.png"; helpoff = new Image(); helpoff.src = "help.png"; backon = new Image(); backon.src = "backon.png"; backoff = new Image(); backoff.src = "back.png"; forwardon = new Image(); forwardon.src = "forwardon.png"; forwardoff = new Image(); forwardoff.src = "forward.png"; prevon = new Image(); prevon.src = "prevon.png"; prevoff = new Image(); prevoff.src = "prev.png"; nexton = new Image(); nexton.src = "nexton.png"; nextoff = new Image(); nextoff.src = "next.png"; upon = new Image(); upon.src = "upon.png"; upoff = new Image(); upoff.src = "up.png"; } function img_act(imgName) { if (checkVersion()) { imgOn = eval(imgName + "on.src"); document [imgName].src = imgOn; } } function img_inact(imgName) { if (checkVersion()) { imgOff = eval(imgName + "off.src"); document [imgName].src = imgOff; } }// --></SCRIPT></HEAD><BODY LANG="EN" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#6688AA" VLINK="#336688" ALINK="#808080"><A NAME="SEC119"></A><TABLE BORDER=0 CELLPADDING=0 CELLSPACING=10><TR VALIGN="TOP"><TD ALIGN="MIDDLE" WIDTH=50 BGCOLOR="#e6e6e6"><TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_118.html#SEC118" onMouseover="img_act('prev')" onMouseout="img_inact('prev')"><IMG SRC="prev.png" BORDER="0" ALT="Back: Cross-Unix Portability" ALIGN="MIDDLE" NAME="prev"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_120.html#SEC120" onMouseover="img_act('next')" onMouseout="img_inact('next')"><IMG SRC="next.png" BORDER="0" ALT="Forward: Cross-Unix System Interfaces" ALIGN="MIDDLE" NAME="next"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"> <TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_121.html#SEC121" onMouseover="img_act('back')" onMouseout="img_inact('back')"><IMG SRC="back.png" BORDER="0" ALT="FastBack: Unix/Windows Portability" ALIGN="MIDDLE" NAME="back"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_118.html#SEC118" onMouseover="img_act('up')" onMouseout="img_inact('up')"><IMG SRC="up.png" BORDER="0" ALT="Up: Cross-Unix Portability" ALIGN="MIDDLE" NAME="up"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_121.html#SEC121" onMouseover="img_act('forward')" onMouseout="img_inact('forward')"><IMG SRC="forward.png" BORDER="0" ALT="FastForward: Unix/Windows Portability" ALIGN="MIDDLE" NAME="forward"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook.html#SEC_Top" onMouseover="img_act('home')" onMouseout="img_inact('home')"><IMG SRC="home.png" BORDER="0" ALT="Top: Autoconf, Automake, and Libtool" ALIGN="MIDDLE" NAME="home"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_toc.html#SEC_Contents" onMouseover="img_act('toc')" onMouseout="img_inact('toc')"><IMG SRC="toc.png" BORDER="0" ALT="Contents: Table of Contents" ALIGN="MIDDLE" NAME="toc"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_285.html#SEC285" onMouseover="img_act('index')" onMouseout="img_inact('index')"><IMG SRC="index.png" BORDER="0" ALT="Index: Index" ALIGN="MIDDLE" NAME="index"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_abt.html#SEC_About" onMouseover="img_act('help')" onMouseout="img_inact('help')"><IMG SRC="help.png" BORDER="0" ALT="About: About this document" ALIGN="MIDDLE" NAME="help"></A></TD></TR></TABLE></TD><TD ALIGN="LEFT"><H3> 15.2.1 Cross-Unix Function Calls </H3><!--docid::SEC119::--><P>Functions not mentioned in POSIX.1 may not be available on all systems.If you want to use one of these functions, you should normally check forits presence by using <SAMP>`AC_CHECK_FUNCS'</SAMP> in your <TT>`configure.in'</TT>script, and adapt to its absence if possible. Here is a list of somepopular functions which are available on many, but not all, modern Unixsystems:<DL COMPACT><DT><CODE>alloca</CODE><DD>There are several portability issues with <CODE>alloca</CODE>. See thedescription of <CODE>AC_FUNC_ALLOCA</CODE> in the autoconf manual. Althoughthis function can be very convenient, it is normally best to avoid it inhighly portable code.<DT><CODE>dlopen</CODE><DD>GNU libtool provides a portable alternate interface to<CODE>dlopen</CODE>. See section <A HREF="autobook_158.html#SEC158">17. Dynamic Loading</A>.<DT><CODE>getline</CODE><DD>In some cases <CODE>fgets</CODE> may be used as a fallback. In others, youwill need to provide your own version of this function.<DT><CODE>getpagesize</CODE><DD>On some systems, the page size is available as the macro<CODE>PAGE_SIZE</CODE> in the header file <TT>`sys/param.h'</TT>. On others, thepage size is available via the <CODE>sysconf</CODE> function. If none ofthose work, you must generally simply guess a value such as<CODE>4096</CODE>.<DT><CODE>gettimeofday</CODE><DD>When this is not available, fall back to a less precise function such as<CODE>time</CODE> or <CODE>ftime</CODE> (which itself is not available on allsystems).<DT><CODE>mmap</CODE><DD>In some cases you can use either <CODE>mmap</CODE> or ordinary file I/O. Inothers, a program which uses <CODE>mmap</CODE> will simply not be portable toall Unix systems. Note that <CODE>mmap</CODE> is an optional part of the 1996version of POSIX.1, so it is likely to be added to all Unix systems overtime.<DT><CODE>ptrace</CODE><DD>Unix systems without <CODE>ptrace</CODE> generally provide some othermechanism for debugging subprocesses, such as <TT>`/proc'</TT>. However,there is no widely portable method for controlling subprocesses, asevidenced by the source code to the GNU debugger, <CODE>gdb</CODE>.<DT><CODE>setuid</CODE><DD>Different Unix systems handle this differently. On some systems, anyprogram can switch between the effective user ID of the executable andthe real user ID. On others, switching to the real user ID is final;some of those systems provide the <CODE>setreuid</CODE> function instead toswitch the effective and real user ID. The effect when a program run bythe superuser calls <CODE>setuid</CODE> varies among systems.<DT><CODE>snprintf</CODE><DD>If this is not available, then in some cases it will be reasonable tosimply use <CODE>sprintf</CODE>, and in others you will need to write a littleroutine to estimate the required length and allocate an appropriatebuffer before calling <CODE>sprintf</CODE>.<DT><CODE>strcasecmp</CODE><DD><DT><CODE>strdup</CODE><DD><DT><CODE>strncasecmp</CODE><DD>You can normally provide your own version of these simple functions.<DT><CODE>valloc</CODE><DD>When this is not available, just use <CODE>malloc</CODE> instead.<DT><CODE>vfork</CODE><DD>When this is not available, just use <CODE>fork</CODE> instead.</DL><P><A NAME="Cross-Unix System Interfaces"></A></TR></TABLE><BR> <FONT SIZE="-1">This document was generatedby <I>Gary V. Vaughan</I> on <I>September, 12 2004</I>using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html"><I>texi2html</I></A></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -