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
- linux011-unstd.h头文件
- linux011-system.h
- conio.h头文件
- stdlib.h头文件
- 头文件time.h
- stdAfx.h头文件
- stdafx.h头文件
- d3dUtility.h头文件
- list.h 头文件
- 头文件errno.h
- 头文件errors.h
- unistd.h头文件
- 头文件WinDef.h
- time.h头文件
- windows.h头文件
- apue.h头文件
- ctype.h头文件
- errno.h 头文件
- Android中Adapter的一种简介的设计
- linux下的创建子进程的方法
- building machine learning system with Python 学习笔记--从零开始机器学习(2)第一章
- 解答:为什么判断一个数是否为素数时只需开平方根就行了!
- tomcat自动部署代码脚本
- linux011-unstd.h头文件
- uboot移植第四天——代码分析(4)
- 略读《Effective C++》摘要
- ARM基础学习-SWI异常中断处理
- 线程中断理解
- 数据结构-树
- 作业4
- Linux下C/C++帮助手册安装方法
- android 接口回调的简单实现