简要对比C语言中的dup()函数和dup2()函数
C语言dup()函数:复制文件描述词头文件:
#include
定义函数:
int dup (int oldfd);
函数说明:dup()用来复制参数oldfd 所指的文件描述词, 并将它返回. 此新的文件描述词和参数oldfd 指的是同一个文件, 共享所有的锁定、读写位置和各项权限或旗标. 例如, 当利用lseek()对某个文件描述词作用时, 另一个文件描述词的读写位置也会随着改变. 不过, 文件描述词之间并不共享close-on-exec 旗标.
返回值:当复制成功时, 则返回最小及尚未使用的文件描述词. 若有错误则返回-1, errno 会存放错误代码.
错误代码:EBADF 参数fd 非有效的文件描述词, 或该文件已关闭.
C语言dup2()函数:复制文件描述词头文件:
#include
定义函数:
int dup2(int odlfd, int newfd);
函数说明:dup2()用来复制参数oldfd 所指的文件描述词, 并将它拷贝至参数newfd 后一块返回. 若参数newfd为一已打开的文件描述词, 则newfd 所指的文件会先被关闭. dup2()所复制的文件描述词, 与原来的文件描述词共享各种文件状态, 详情可参考dup().
返回值:当复制成功时, 则返回最小及尚未使用的文件描述词. 若有错误则返回-1, errno 会存放错误代码.
附加说明:dup2()相当于调用fcntl(oldfd, F_DUPFD, newfd).
错误代码:EBADF 参数fd 非有效的文件描述词, 或该文件已关闭
时间: 2015-08-28
C语言wait()函数:结束(中断)进程函数(常用) 头文件: #include #include 定义函数: pid_t wait (int * status); 函数说明:wait()会暂时停止目前进程的执行, 直到有信号来到或子进程结束. 如果在调用wait()时子进程已经结束, 则wait()会立即返回子进程结束状态值. 子进程的结束状态值会由参数status 返回, 而子进程的进程识别码也会一快返回. 如果不在意结束状
C语言execv()函数:执行文件函数 头文件: #include 定义函数: int execv (const char * path, char * const argv[]); 函数说明:execv()用来执行参数path 字符串所代表的文件路径, 与execl()不同的地方在于execve()只需两个参数, 第二个参数利用数组指针来传递给执行文件. 返回值:如果执行成功则函数不会返回, 执行失败则直接返回-1, 失败原因存于errno 中. 错误代码:请参考 ex
C语言fputc()函数:写文件函数(将一指定字符写入文件流中) 头文件: #include 定义函数: int fputc(int c, FILE * stream); 函数说明:fputc 会将参数c 转为unsigned char 后写入参数stream 指定的文件中. 返回值:fputc()会返回写入成功的字符, 即参数c. 若返回EOF 则代表写入失败. 范例 #include main() { FILE * fp; char a[
C语言setbuf()函数:把缓冲区与流相关联 头文件: #include 函数setbuf()用于将指定缓冲区与特定的文件流相关联,实现操作缓冲区时直接操作文件流的功能.其原型如下: void setbuf(FILE * stream, char * buf); [参数]stream为文件流指针,buf为缓冲区的起始地址. 如果参数buf 为NULL 指针,则为无缓冲,setbuf()相当于调用setvbuf(stream, buf, buf ? _IOFBF : _IO
C语言chmod()函数:修改文件权限 头文件: #include #include 定义函数: int chmod(const char * path, mode_t mode); 函数说明:chmod()会依参数mode 权限来更改参数path 指定文件的权限. 参数 mode 有下列数种组合: 1.S_ISUID 04000 文件的 (set user-id on execution)位 2.S_ISGID 02000 文
C语言memccpy()函数:复制内存中的内容 头文件: #include 定义函数: void * memccpy(void *dest, const void * src, int c, size_t n); 函数说明:memccpy()用来拷贝src 所指的内存内容前n 个字节到dest 所指的地址上.与memcpy()不同的是,memccpy()会在复制时检查参数c 是否出现,若是则返回dest 中值为c 的下一个字节地址. 返回值:返回指向dest 中值为c 的
C语言getc()函数:从流中读取字符 头文件: #include 函数getc()用于从流中取字符,其原型如下: int getc(FILE *stream); [参数]参数*steam为要从中读取字符的文件流. [返回值]该函数执行成功后,将返回所读取的字符. [说明]若从一个文件中读取一个字符,读到文件尾而无数据时便返回EOF.getc()与fgetc()作用相同,但在某些库中getc()为宏定义,而非真正的函数. [实例]下面的示例演示了getc()函数的使用,在程
C语言setgid()函数:设置真实的组识别码 头文件: #include 定义函数: int setgid(gid_t gid); 函数说明:setgid()用来将目前进程的真实组识别码(real gid)设成参数gid 值. 如果是以超级用户身份执行此调用, 则real.effective 与savedgid 都会设成参数gid. 返回值:设置成功则返回0, 失败则返回-1, 错误代码存于errno 中. 错误代码: EPERM:并非以超级用户身份调用, 而且参数gi
C语言execl()函数:执行文件函数 头文件: #include 定义函数: int execl(const char * path, const char * arg, ...); 函数说明:execl()用来执行参数path 字符串所代表的文件路径, 接下来的参数代表执行该文件时传递过去的argv(0), argv[1], ..., 最后一个参数必须用空指针(NULL)作结束. 返回值:如果执行成功则函数不会返回, 执行失败则直接返回-1, 失败原因存于errno
C语言umask()函数:设置建立新文件时的权限遮罩 头文件: #include #include 定义函数: mode_t umask(mode_t mask); 函数说明:umask()会将系统umask值设成参数mask&0777后的值, 然后将先前的umask值返回.在使用open()建立新文件时, 该参数mode 并非真正建立文件的权限, 而是(mode&~umask)的权限值. 例如: 在建立文件时指
C语言truncate()函数:改变文件大小 头文件: #include 定义函数: int truncate(const char * path, off_t length); 函数说明:truncate()会将参数path 指定的文件大小改为参数length 指定的大小. 如果原来的文件大小比参数length 大, 则超过的部分会被删去. 返回值:执行成功则返回0, 失败返回-1, 错误原因存于errno. 错误代码: 1.EACCESS 参数path 所指定的文件无