详解C语言中symlink()函数和readlink()函数的使用_C 语言

C语言symlink()函数:建立文件符号连接
头文件:

 #include <unistd.h>

定义函数:

int symlink(const char * oldpath, const char * newpath);

函数说明:symlink()以参数newpath 指定的名称来建立一个新的连接(符号连接)到参数oldpath 所指定的已存在文件. 参数oldpath 指定的文件不一定要存在, 如果参数newpath 指定的名称为一已存在的文件则不会建立连接.

返回值:成功则返回0, 失败返回-1, 错误原因存于errno.

错误代码:
1、EPERM 参数oldpath 与newpath 所指的文件系统不支持符号连接。
2、EROFS 欲测试写入权限的文件存在于只读文件系统内。
3、EFAULT 参数oldpath 或newpath 指针超出可存取内存空间。
4、ENAMETOOLONG 参数oldpath 或newpath 太长。
5、ENOMEM 核心内存不足。
6、EEXIST 参数newpath 所指的文件名已存在。
7、EMLINK 参数oldpath 所指的文件已达到最大连接数目。
8、ELOOP 参数pathname 有过多符号连接问题。
9、ENOSPC 文件系统的剩余空间不足。
10、EIO I/O 存取错误。

范例

#include <unistd.h>
main()
{
  symlink("/etc/passwd", "pass");
}

C语言readlink()函数:取得符号连接所指的文件
头文件:

 #include <unistd.h>

定义函数:

int readlink(const char * path, char * buf, size_t bufsiz);

函数说明:readlink()会将参数path 的符号连接内容存到参数buf 所指的内存空间, 返回的内容不是以NULL作字符串结尾, 但会将字符串的字符数返回. 若参数bufsiz 小于符号连接的内容长度, 过长的内容会被截断.

返回值:执行成功则传符号连接所指的文件路径字符串, 失败则返回-1, 错误代码存于errno.

错误代码:
1、EACCESS 取文件时被拒绝, 权限不够。
2、EINVAL 参数bufsiz 为负数。
3、EIO I/O 存取错误。
4、ELOOP 欲打开的文件有过多符号连接问题。
5、ENAMETOOLONG 参数path 的路径名称太长。
6、ENOENT 参数path 所指定的文件不存在。
7、ENOMEM 核心内存不足。
8、ENOTDIR 参数path 路径中的目录存在但却非真正的目录。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c语言
, symlink
readlink
link symlink、c语言指针详解、c语言题库及详解答案、c语言32个关键字详解、c语言结构体详解,以便于您获取更多的相关知识。

时间: 2024-10-30 20:25:34

详解C语言中symlink()函数和readlink()函数的使用_C 语言的相关文章

详解C语言中scanf函数使用的一些注意点_C 语言

 (一)基本介绍 Scanf是系统自带的函数,声明包含在stdio.h文件中,因此要是有该函数,必须加载#include<stdio.h>头文件.当执行到scanf函数时,程序就暂停等待用户输入,该函数只接受变量的地址,格式为&变量名.是一个阻塞式的函数,2用户输入完毕后,则将值赋值给变量,至此函数调用完毕.敲回车键告知计算机键入完毕. (二)使用注意 ①. 使用scanf函数输入一个字符变量.Char a; scanf("%c",&a); ②. 同时输入多

详解C语言中rand函数的使用_C 语言

前言 我们在编程实现算法的过程中,往往需要使用到随机数.由于计算机是一台以逻辑为基础的机器,没法做到真正的随机(大概量子计算机可以?).所以计算机生成的是伪随机数,供我们使用. 我们使用C语言的rand函数,生成的也是伪随机数. c语言之rand函数的使用 1.写入头文件 #include <stdlib.h> #include <stdio.h> #include <time.h> 2.变量的定义 void main( void ) { int i,k; 3.sran

详解C语言中fseek函数和ftell函数的使用方法_C 语言

fseek函数: int fseek(FILE * _File, long _Offset, int _Origin); 函数设置文件指针stream的位置.如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0.如果执行失败则不改变stream指向的位置,函数返回一个非0值. 超出文件末尾位置,还是返回0.往回偏移超出首位置,还是返回0,小心使用. 第一个参数stream为文件指针. 第二个参数offset为偏移量,正数表示正向偏移,

详解C语言中freopen()函数和fclose()函数的用法_C 语言

C语言freopen()函数:打开文件函数,并获得文件句柄 头文件: #include <stdio.h> 定义函数: FILE * freopen(const char * path, const char * mode, FILE * stream); 函数说明: 参数 path 字符串包含欲打开的文件路径及文件名. 参数mode 请参考fopen()说明.. 参数stream 为已打开的文件指针. Freopen()会将原stream 所打开的文件流关闭, 然后打开参数path 的文件.

详解C语言中free()函数与getpagesize()函数的使用_C 语言

C语言free()函数:释放动态分配的内存空间头文件: #include <stdlib.h> free() 函数用来释放动态分配的内存空间,其原型为: void free (void* ptr); free() 可以释放由 malloc().calloc().realloc() 分配的内存空间,以便其他程序再次使用. [参数说明]ptr 为将要释放的内存空间的地址. free() 只能释放动态分配的内存空间,并不能释放任意的内存.下面的写法是错误的: int a[10]; // ... fr

详解C语言中的ttyname()函数和isatty()函数的用法_C 语言

C语言ttyname()函数:返回一终端机名称头文件: #include <unistd.h> 定义函数: char * ttyname(int desc); 函数说明:如果参数desc 所代表的文件描述词为一终端机, 则会将此终端机名称由一字符串指针返回, 否则返回NULL. 返回值:如果成功则返回指向终端机名称的字符串指针, 有错误情况发生时则返回NULL. 范例 #include <unistd.h> #include <sys/types.h> #include

详解C语言中的getgrgid()函数和getgrnam()函数_C 语言

C语言getgrgid()函数:从组文件中取得指定gid的数据 头文件: #include <grp.h> #include <sys/types.h> 定义函数: strcut group * getgrgid(gid_t gid); 函数说明:getgrgid()用来依参数gid 指定的组识别码逐一搜索组文件, 找到时便将该组的数据以group 结构返回. 返回值:返回 group 结构数据, 如果返回NULL 则表示已无数据, 或有错误发生. 范例 /* 取得gid=3 的组

详解C语言中getgid()函数和getegid()函数的区别_C 语言

C语言getgid()函数:取得组识别码函数 头文件: #include <unistd.h> #include <sys/types.h> 定义函数: gid_t getgid(void); 函数说明:getgid()用来取得执行目前进程的组识别码. 返回值:返回组识别码 范例 #include <unistd.h> #include <sys/types.h> main() { printf("gid is %d\n", getgid

详解C语言中strcpy()函数与strncpy()函数的使用_C 语言

C语言strcpy()函数:复制字符串 头文件:#include <string.h> 定义函数: char *strcpy(char *dest, const char *src); 函数说明:strcpy()会将参数src 字符串拷贝至参数dest 所指的地址. 返回值:返回参数dest 的字符串起始地址. 附加说明:如果参数 dest 所指的内存空间不够大,可能会造成缓冲溢出(buffer Overflow)的错误情况,在编写程序时请特别留意,或者用strncpy()来取代. 范例 #i