Unix 输入和输出

编程入门 行业动态 更新时间:2024-10-10 23:17:49

<a href=https://www.elefans.com/category/jswz/34/1770442.html style=Unix 输入和输出"/>

Unix 输入和输出

NIX系统shell使用文件描述符0与进程的标准输入相关联,文件描述符1与标准输出相关联,文件描述符2与标准出错相关联。这是各种shell以及很多应用程序使用的惯例,而与UNIX内核无关,如果不遵守这种惯例,那么很多UNIX系统应用程序就不能正常工作。

  在依从POSIX的应用程序中,幻数0、1、2应当替换成符号常量

      STDIN_FILENO,
      STDOUT_FILENO,
      STDERR_FILENO。
     这些常量都定义在头文件<unistd.h>中。

freebsd/include/unistd.h

/**-* Copyright (c) 1991, 1993, 1994*	The Regents of the University of California.  All rights reserved.** Redistribution and use in source and binary forms, with or without* modification, are permitted provided that the following conditions* are met:* 1. Redistributions of source code must retain the above copyright*    notice, this list of conditions and the following disclaimer.* 2. Redistributions in binary form must reproduce the above copyright*    notice, this list of conditions and the following disclaimer in the*    documentation and/or other materials provided with the distribution.* 3. Neither the name of the University nor the names of its contributors*    may be used to endorse or promote products derived from this software*    without specific prior written permission.** THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE* ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF* SUCH DAMAGE.**	@(#)unistd.h	8.12 (Berkeley) 4/27/95* $FreeBSD$*/#ifndef _UNISTD_H_
#define	_UNISTD_H_#include <sys/cdefs.h>
#include <sys/types.h>			/** XXX adds too much pollution. */
#include <sys/unistd.h>
#include <sys/_null.h>
#include <sys/_types.h>#ifndef _GID_T_DECLARED
typedef	__gid_t		gid_t;
#define	_GID_T_DECLARED
#endif#ifndef _OFF_T_DECLARED
typedef	__off_t		off_t;
#define	_OFF_T_DECLARED
#endif#ifndef _PID_T_DECLARED
typedef	__pid_t		pid_t;
#define	_PID_T_DECLARED
#endif#ifndef _SIZE_T_DECLARED
typedef	__size_t	size_t;
#define	_SIZE_T_DECLARED
#endif#ifndef _SSIZE_T_DECLARED
typedef	__ssize_t	ssize_t;
#define	_SSIZE_T_DECLARED
#endif#ifndef _UID_T_DECLARED
typedef	__uid_t		uid_t;
#define	_UID_T_DECLARED
#endif#ifndef _USECONDS_T_DECLARED
typedef	__useconds_t	useconds_t;
#define	_USECONDS_T_DECLARED
#endif#define	STDIN_FILENO	0	/** standard input file descriptor */
#define	STDOUT_FILENO	1	/** standard output file descriptor */
#define	STDERR_FILENO	2	/** standard error file descriptor */#if __XSI_VISIBLE || __POSIX_VISIBLE >= 200112
#define	F_ULOCK		0	/** unlock locked section */
#define	F_LOCK		1	/** lock a section for exclusive use */
#define	F_TLOCK		2	/** test and lock a section for exclusive use */
#define	F_TEST		3	/** test a section for locks by other procs */
#endif/*** POSIX options and option groups we unconditionally do or don't* implement.  This list includes those options which are exclusively* implemented (or not) in user mode.  Please keep this list in* alphabetical order.** Anything which is defined as zero below **must** have an* implementation for the corresponding sysconf() which is able to* determine conclusively whether or not the feature is supported.* Anything which is defined as other than -1 below **must** have* complete headers, types, and function declarations as specified by* the POSIX standard; however, if the relevant sysconf() function* returns -1, the functions may be stubbed out.*/
#define	_POSIX_BARRIERS			200112L
#define	_POSIX_READER_WRITER_LOCKS	200112L
#define	_POSIX_REGEXP			1
#define	_POSIX_SHELL			1
#define	_POSIX_SPAWN			200112L
#define	_POSIX_SPIN_LOCKS		200112L
#define	_POSIX_THREAD_ATTR_STACKADDR	200112L
#define	_POSIX_THREAD_ATTR_STACKSIZE	200112L
#define	_POSIX_THREAD_CPUTIME		200112L
#define	_POSIX_THREAD_PRIO_INHERIT	200112L
#define	_POSIX_THREAD_PRIO_PROTECT	200112L
#define	_POSIX_THREAD_PRIORITY_SCHEDULING 200112L
#define	_POSIX_THREAD_PROCESS_SHARED	-1
#define	_POSIX_THREAD_SAFE_FUNCTIONS	-1
#define	_POSIX_THREAD_SPORADIC_SERVER	-1
#define	_POSIX_THREADS			200112L
#define	_POSIX_TRACE			-1
#define	_POSIX_TRACE_EVENT_FILTER	-1
#define	_POSIX_TRACE_INHERIT		-1
#define	_POSIX_TRACE_LOG		-1
#define	_POSIX2_C_BIND			200112L	/** mandatory */
#define	_POSIX2_C_DEV			-1 /** need c99 utility */
#define	_POSIX2_CHAR_TERM		1
#define	_POSIX2_FORT_DEV		-1 /** need fort77 utility */
#define	_POSIX2_FORT_RUN		200112L
#define	_POSIX2_LOCALEDEF		-1
#define	_POSIX2_PBS			-1
#define	_POSIX2_PBS_ACCOUNTING		-1
#define	_POSIX2_PBS_CHECKPOINT		-1
#define	_POSIX2_PBS_LOCATE		-1
#define	_POSIX2_PBS_MESSAGE		-1
#define	_POSIX2_PBS_TRACK		-1
#define	_POSIX2_SW_DEV			-1 /** XXX ??? */
#define	_POSIX2_UPE			200112L
#define	_V6_ILP32_OFF32			-1
#define	_V6_ILP32_OFFBIG		0
#define	_V6_LP64_OFF64			0
#define	_V6_LPBIG_OFFBIG		-1#if __XSI_VISIBLE
#define	_XOPEN_CRYPT			-1 /** XXX ??? */
#define	_XOPEN_ENH_I18N			-1 /** mandatory in XSI */
#define	_XOPEN_LEGACY			-1
#define	_XOPEN_REALTIME			-1
#define	_XOPEN_REALTIME_THREADS		-1
#define	_XOPEN_UNIX			-1
#endif/** Define the POSIX.2 version we target for compliance. */
#define	_POSIX2_VERSION		199212L/*** POSIX-style system configuration variable accessors (for the* sysconf function).  The kernel does not directly implement the* sysconf() interface; rather, a C library stub translates references* to sysconf() into calls to sysctl() using a giant switch statement.* Those that are marked `user' are implemented entirely in the C* library and never query the kernel.  pathconf() is implemented* directly by the kernel so those are not defined here.*/
#define	_SC_ARG_MAX		 1
#define	_SC_CHILD_MAX		 2
#define	_SC_CLK_TCK		 3
#define	_SC_NGROUPS_MAX		 4
#define	_SC_OPEN_MAX		 5
#define	_SC_JOB_CONTROL		 6
#define	_SC_SAVED_IDS		 7
#define	_SC_VERSION		 8
#define	_SC_BC_BASE_MAX		 9 /** user */
#define	_SC_BC_DIM_MAX		10 /** user */
#define	_SC_BC_SCALE_MAX	11 /** user */
#define	_SC_BC_STRING_MAX	12 /** user */
#define	_SC_COLL_WEIGHTS_MAX	13 /** user */
#define	_SC_EXPR_NEST_MAX	14 /** user */
#define	_SC_LINE_MAX		15 /** user */
#define	_SC_RE_DUP_MAX		16 /** user */
#define	_SC_2_VERSION		17 /** user */
#define	_SC_2_C_BIND		18 /** user */
#define	_SC_2_C_DEV		19 /** user */
#define	_SC_2_CHAR_TERM		20 /** user */
#define	_SC_2_FORT_DEV		21 /** user */
#define	_SC_2_FORT_RUN		22 /** user */
#define	_SC_2_LOCALEDEF		23 /** user */
#define	_SC_2_SW_DEV		24 /** user */
#define	_SC_2_UPE		25 /** user */
#define	_SC_STREAM_MAX		26 /** user */
#define	_SC_TZNAME_MAX		27 /** user */#if __POSIX_VISIBLE >= 199309
#define	_SC_ASYNCHRONOUS_IO	28
#define	_SC_MAPPED_FILES	29
#define	_SC_MEMLOCK		30
#define	_SC_MEMLOCK_RANGE	31
#define	_SC_MEMORY_PROTECTION	32
#define	_SC_MESSAGE_PASSING	33
#define	_SC_PRIORITIZED_IO	34
#define	_SC_PRIORITY_SCHEDULING	35
#define	_SC_REALTIME_SIGNALS	36
#define	_SC_SEMAPHORES		37
#define	_SC_FSYNC		38
#define	_SC_SHARED_MEMORY_OBJECTS 39
#define	_SC_SYNCHRONIZED_IO	40
#define	_SC_TIMERS		41
#define	_SC_AIO_LISTIO_MAX	42
#define	_SC_AIO_MAX		43
#define	_SC_AIO_PRIO_DELTA_MAX	44
#def

更多推荐

Unix 输入和输出

本文发布于:2024-02-13 05:50:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1690942.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Unix

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!