linux011-unstd.h头文件

来源:互联网 发布:windows xp ping不通 编辑:程序博客网 时间:2024/06/05 05:03
#ifndef _UNISTD_H#define _UNISTD_H//指出符合IEEE标志1003.1实现的版本#define _POSIX_VERSION 19808L//chown和fchown的使用受限于进程的权限#define _POSIX_CHOWN_RESTRICTRD//长于(name max)的路径名将产生错误,不会自动截断#define _POSIX_NO_TRUNC//这个符号定义成字符值,该值将禁止终端对其的处理#define _POSIX_VDISABLE '\0'#define STDIN_FILEN0  0 //标准输入文件句柄 #define STDOUT_DILENO 1// 标准输出文件句柄#define STDERR_FILENO 2// 标准出错文件句柄#ifndef NULL #define NULL ((void*)0)  //空指针#endif//access()#define F_OK   0  //检测文件是否存在 #define X_OK   1  //检测是否可执行#define W_OK   2  // 检测是否可写#define R_OK   4  //检测是否可读//lseek()#define SEEK_SET 0 //将文件读写指针设置位偏移值#define SEEK_CUR 1 //将文件读写指针设置位当前值加上偏移值#define SEEK_END 2 //将文件读写指针设置位文件长度加上偏移值#define _SC_ARG_MAX        1 //最大变量数 #define _SC_CHILD_MAX      2 //子进程最大数 #define _SC_CLOCKS_PER_SEC 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 _PC_LINK_MAX       1 // 连接最大数#define _PC_MAX_CANON      2 //最大常规文件数 #define _PC_MAX_INPUT      3 //最大输入长度 #define _PC_NAME_MAX       4 //名称最大长度 #define _PC_PATH_MAX       5 //路径最大长度 #define _PC_PIPE_BUF       6 //管道缓冲大小#define _PC_NO_TRUNC       7 //文件名不截断 #define _PC_VDISABLE       8 // #define _PC_CHOWN_RESTRICTED 9  //改变宿主受限#include<sys/stat.h> #include<sys/times.h> #include<sys/utsname.h> #include<utime.h> #ifdef _LIBRARY_#define _NR_setup    0#define _NR_fork     1#define _NR_exit     2#define _NR_read     3#define _NR_write    4#define _NR_open     5#define _NR_close    6#define _NR_waitpid  7#define _NR_creat    8#define _NR_link     9#define _NR_unlink   10 #define _NR_execve   11 #define _NR_chdir    12 #define _NR_time     13 #define _NR_mknod    14 #define _NR_chmod    15 #define _NR_chwon    16 #define _NR_break    17 #define _NR_stat     18 #define _NR_lseek    19 #define _NR_getpid   20 #define _NR_mount    21 #define _NR_umount   22 #define _NR_setuid   23 #define _NR_getuid   24 #define _NR_stime    25 #define _NR_ptrace   26#define _NR_alarm    27 #define _NR_fstat    28 #define _NR_pause    29 #define _NR_utime    30 #define _NR_stty     31 #define _NR_gtty     32 #define _NR_access   33 #define _NR_nice     34 #define _NR_ftime    35 #define _NR_sync     36 #define _NR_kill     37 #define _NR_rename   38 #define _NR_mkdir    39 #define _NR_rmdir    40 #define _NR_dup     41 #define _NR_pipe     42 #define _NR_times    43 #define _NR_prof     44 #define _NR_brk     45 #define _NR_setgid   46 #define _NR_getgid   47 #define _NR_signal   48 #define _NR_geteuid  49 #define _NR_getegid  50 #define _NR_acct     51 #define _NR_phys     52 #define _NR_lock     53 #define _NR_ioctl    54 #define _NR_fcntl    55 #define _NR_mpx     56 #define _NR_setpgid  57 #define _NR_ulimit   58 #define _NR_uname    59 #define _NR_umask    60 #define _NR_chroot   61 #define _NR_ustat    62 #define _NR_dup2     63 #define _NR_getppid  64 #define _NR_getpgrp  65 #define _NR_setsid   66 #define _NR_sigaction 67 #define _NR_sgetmask 68 #define _NR_ssetmask 69#define _NR_setreuid 70#define _NR_setregid 71/*定义系统调用嵌入式汇编宏函数*不带参数的系统调用宏函数 type name(void)*%0-eax(res),%1-eax(_NR_##name).其中name是系统调用的名称,与上面_NR_组合形成上面的*系统调用符号常数,从而用来对系统调用表中函数指针寻址*返回:如果返回值大于等于0,则返回该值,否则置出错号errno,并返回-1*/#define _syscall0(type,name) \type name(void)      \{                    \  long _res;     \__asm__ volatile("int 0x80"  \ :"=a(_res)" \                 :""(_NR_##name);\ //输入系统中断调用号_NR_name                 );          \if(_res>=0)     \return (type) _res;  \errno=-_res;     \return -1;     \        }/*有一个参数的系统调用函数type name(atype a)*%0-eax(_res),%1-eax(_NR_name),%2-ebx(a)***/#define _syscall1(type,name,atype,a)           \    type name(atype a)                             \{       \long _res;       \_asm_ volaile(       \"int 0x80"       \:"=a"(_res)       \:""(_NR_##name),"b"((long)(a)) \);       \if(_res>0)       \return (type) _res;       \errno = -_res;       \return -1;}/*有两个参数的系统调用type name(atype a,btype b)*%0-eax(res),%1-eax(_NR_name),%2-ebx(a),%3-ecx(b)**/#define _syscall2(type,name,atype a,btype b)               \ type name(atype a,btype b)   \ {   \ long _res;   \ _asm_ volaile(   \ "int 0x80"   \ :"=a"(_res)   \ :""(_NR_name),"b"((long)(a)),"c"((long)(b))\ );   \ if(_res>=0)   \ return (type) _res;   \ errno =-_res;   \ return -1;                                         \}/*有2个参数的系统调用宏函数type name(atype a,btype b,ctype c)*%0-eax(res),%1-eax(_NR_name),%2-ebx(a),%3-ecx(b),%4-edx(c)**/#define _syscall3(type,name,atype a,btype b,ctypec) \type name(atype a,btype b,ctype c)    \{    \long _res;    \_asm_ volaile(    \"int 0x80"    \:"=a"(_res)    \:""(_NR_name),"b"((long)(a)),    \"c"((long)(b)),"d"((long)(c))    \);    \if(_res>=0)    \return (type)_res;    \errno=-_res;    \return -1;    \}#endifextern int errno;   //出错号,全局变量//系统调用的函数原型定义int access(const char*filename,mode_t mode);int acct(const char*filename);int alarm(int sec);int brk(void *end_data_segment);void *sbrk(ptrdiff_t increment);int chdir(const char*filenem);int chmod(const char*filenem,mode_t mode);int chown(const char*filenem,uid_t owner,gid_t group);int chroot(const char*filenem);int close(int fildes);int creat(const char*filenem,mode_t mode);int dup(int fildes);int execve(const char*filenamem,char**argv,char**envp);int ececv(const char*filename,char**argv);int execvp(const char*file,char**arg);int execl(const char*pathname,char*arg0...);int execlp(const char*file,char*arg0...);int execle(const char*pathname,char*arg0...);volatile void exit(int status);volatile void _exit(int status);int fcntl(int fildes,int cmd...);int fork(void);int getpid(void);int getuid(void);int geteuid(void);int getgid(void);int getegid(void);int ioctl(int fildes,int cmd...);int kill(pid_t pid,int signal);int link(const char*filenamel,const char*filename2);int lseek(int fildes,off_t offsets,int origin);int mknod(const char*filename,mode_t mode,dev_t dev);int mount(const char*specialfile,const char*dir,int reflag);int nice(int val);int open(const char*filename,int flag...);int pause(void);int pipe(int *fildes);int read(int fildes,char*buf,off_t count);int setpgrp(void);int setuid(uid_t uid);int setpgid(pid_t pid,pid_t pgid);int setgid(gid_t gid);void (*signal(int sig,void(*fn)(int)))(int);int stat(const char*filename,struct stat*stat_buf);int fstat(int fildes,struct stat* stat_buf);int stime(time_t *tptr);int sync(void);time_t time(time_t *tloc);time_t times(struct tms*buf);int ulimit(int cmd,long limit);mode_t umask(mode_t mask);int umount(const char*specialfile);int uname(struct utsname*name);int unlink(const char*filename);int ustat(dev_t dev,struct ustat*ubuf);int utime(const char*filename,struct utimbuf*times);pid_t waitpid(pid_t pid,int*wait,int options);pit_t wait(int *wait_stat);int write(int fildes,const char*buf,off_t count);int dup2(int oldfd,int newfd);int getppid(void);pid_t getpgrp(void);pid_t setsid(void);#endif

0 0