unix环境高级编程-4.17-sylmink和readlink函数

RabbitMQ的使用(JAVA) Java快速上手的MQ上线! 阅读详情

本节将介绍symlink和readlink函数的一些基本原理。

symlink函数用来创建一个符号链接

#include<unistd.h>

int symlink(const char* a c t u a l p a t h,const char* sympath);

查看GNU C文档

int symlink (const char *oldname, const char *newname) [Function]
The symlink function makes a symbolic link to oldname named newname.
The normal return value from symlink is 0. A return value of -1 indicates an error.
In addition to the usual file name syntax errors (see Section 11.2.3 [File Name Errors],
page 224), the following errno error conditions are defined for this function:
EEXIST There is already an existing file named newname.
EROFS The file newname would exist on a read-only file system.
ENOSPC The directory or file system cannot be extended to make the new link.
EIO A hardware error occurred while reading or writing data on the disk.

该函数创建了一个指向a c t u a l p a t h的新目录项s y m p a t h,在创建此符号连接时,并不要求
a c t u a l p a t h已经存在(在上一节结束部分的例子中我们已经看到了这一点)。并且, a c t u a l p a t h
和s y m p a t h并不需要位于同一文件系统中。
因为o p e n函数跟随符号连接,所以需要有一种方法打开该连接本身,并读该连接中的名字。
r e a d l i n k函数提供了这种功能。

#include <unistd.h>
ssize_t readlink(const char* restrict pathname,char * restrict buf ,size_t bufsize);


GNUC 手册。

int readlink (const char *filename, char *buffer, size t size) [Function]
The readlink function gets the value of the symbolic link filename. The file name that
the link points to is copied into buffer. This file name string is not null-terminated;
readlink normally returns the number of characters copied. The size argument
specifies the maximum number of characters to copy, usually the allocation size of
buffer.
If the return value equals size, you cannot tell whether or not there was room to
return the entire name. So make a bigger buffer and call readlink again. Here is an
example:

char *
readlink_malloc (const char *filename)
{
int size = 100;
char *buffer = NULL;
while (1)
{
buffer = (char *) xrealloc (buffer, size);
int nchars = readlink (filename, buffer, size);
if (nchars < 0)
{
free (buffer);
return NULL;
}
if (nchars < size)
return buffer;
size *= 2;
}
}

A value of -1 is returned in case of error. In addition to the usual file name errors (see
Section 11.2.3 [File Name Errors], page 224), the following errno error conditions are
defined for this function:
EINVAL The named file is not a symbolic link.
EIO A hardware error occurred while reading or writing data on the disk.
In some situations it is desirable to resolve all the symbolic links to get the real name of
a file where no prefix names a symbolic link which is followed and no filename in the path
is . or ... This is for instance desirable if files have to be compare in which case different
names can refer to the same inode.

此函数组合了open,read ,close函数所有的操作。乳沟此函数成功执行,则返回读入的buf字节数。在buf忠返回符号连接的内容不以null字符终止。

更多内容欢迎访问:http://blog.youkuaiyun.com/wallwind

嵌入式软考必备知识点:嵌入式系统开发中的重要概念和示例代码 在嵌入式软考中,有一些重要的知识点需要掌握,包括嵌入式系统的基本概念、编程语言、实时操作系统和硬件接口等。实时操作系统是一种专门设计用于嵌入式系统的操作系统,可以提供对任务调度、中断处理和资源管理等方面的支持。GPIO(通用输入输出):GPIO是嵌入式系统中常用的硬件接口,用于连接外部设备和嵌入式系统。以上是嵌入式软考中的一些必备知识点,包括嵌入式系统的基本概念、编程语言、实时操作系统和硬件接口。通过配置串口的波特率、数据位数和校验位等参数,可以实现与其他设备的可靠通信。一、嵌入式系统的基本概念。 阅读详情

相关推荐

整合WGCNA、机器学习和孟德尔随机化

(G)通过蛋白质免疫印迹法(Western blot)测定的 UT-B(由 SLC14A1 编码)、ARHGEF38、NEFH、MSMB、KRT23 和 KRT15 在前列腺癌肿瘤组织和癌旁非癌组织中的蛋白质表达水平。本研究利用来自基因表达综合数据库(GEO)的数据集筛选差异表达基因(DEGs),并采用加权基因共表达网络分析(WGCNA),以识别在模块中与前列腺癌高度相关的驱动基因。(F)蓝绿色模块中的模块成员关系(MM)与前列腺癌(PCa)的基因显著性(GS)的散点图。(D)6 个基因之间的相关性分析。

多组・学・多组学 1135

Linux系统调用八、link系列API函数详解

Linux系统调用系列八、link系列函数包括:link()函数、symlink()函数、readlink()函数、unlink()函数。

仅以此博客记录日常学习工作中所思所得,水平有限,难登大雅,万望海涵。 3367

泛微OA表单开发实战:如何用JavaScript动态控制明细表的必填与可编辑属性

本文详细介绍了如何在泛微OA系统中使用JavaScript动态控制明细表字段的必填与可编辑属性。通过主表字段变更事件监听和明细表字段属性批量修改,实现智能化的表单交互,提升用户体验和系统灵活性。文章深入解析了关键API的使用方法,并提供了实战代码示例和最佳实践。

weixin_30955617的博客 544

系统调用(四)——文件操作函数

文件操作函数

qq_45855825的博客 3563

遥感SCI期刊模板下载教程———IEEE TGRS、GRSL、JSTARS

IEEE下的期刊模板下载,以IEEE TGRS 为例。

海淀小天的blog 2万+

北航机器学习2020-2021秋季学期期末试题回忆

北航机器学习2020-2021秋季学习期末试题回忆 fanjn, zhangyy, yuanq, wanggq, weixy, anh, wangyy, zhouxy, likc1 【注:考试使用纯白的A3答题纸,考试时间2h,各位同学可以自行模拟考试】 此试卷1-8题为10分,第9题为20分 1.2077年人类发射近地卫星,一共发射800颗,根据大小和轨道远近,有着不同的宜居条件(+表示宜居),有以下表格(数字八九不离十,其他属性什么的原题就是交替的) 数量 大小 轨道 是否宜居 30

weixin_45262065的博客 7608

【系统调用】常用系统调用函数(三)

操作系统的职责什么是Linux系统编程系统编程主要就是为了让用户能够更好和更方便的操作硬件设备,并且对硬件设备也起到保护作用。我们所写的程序,本质就是对硬件设备的操作,所以操作系统提供接口可以对硬件进行操作。第一种:shell,用户通过shell命令,由shell解释器操作内核的系统调用。第二种:库函数,用户通过应用层库函数的接口,比如fread对内核的系统调用进行操作。第三种:应用层系统调用,它可以直接对内核的系统调用进行操作。系统调用时操作系统提供给用户程序的一组“特殊”的函数接口。

bala5569的博客 914

[CTFSHOW]JWT

文章目录前言JWT简介CTFSHOW Web345CTFSHOW Web346前置知识开始做题CTFSHOW Web347CTFSHOW Web348CTFSHOW Web349CTFSHOW Web350前置知识利用WP如何防御 前言 有些师傅向我咨询WP,索性就发了吧,其实早就写好了,只是懒,在github仓库里囤着 JWT简介 可以看看我的Github总结给自己看的,Y4tacker CTFSHOW Web345 首先打开题目,查看源码,接下来访问/admin被跳转回主页啥也没有发生 where is

Y4tacker的博客 6038

link、symlink、readlink、unlink函数的使用

#include <unistd.h> int link(const char *oldpath, const char *newpath); 作用:创建一个硬链接 0成功 -1 失败 //代码 #include <stdio.h> #include <stdlib.h> #include <unistd.h> int ma...

luciusvorenus 1775

用Quartus II和LPM_ROM手把手复现西电计组课设:从微指令到五条指令的完整流程

本文详细介绍了使用Quartus II和LPM_ROM复现西电计组课设的完整流程,从微指令编写到五条指令的实现。通过环境搭建、LPM_ROM配置、微程序设计及调试技巧,帮助读者高效完成课程设计,避开常见问题。适合计组课程设计的学习者和实践者参考。

weixin_29288313的博客 455

Uniapp-APP后台保活插件(安卓后台保活)

Uniapp-APP后台保活插件(安卓后台保活)亲测有效!

weixin_57844432的博客 1万+

linux shell readlink 获取当前脚本文件绝对路径

当前脚本绝对路径:readlink -m $0 readlink命令简介 Linux中的readlink命令用于打印解析的符号链接或规范文件名。用简单的话来说,只要我们有一个符号链接,我们就想知道它代表什么路径。然后,在这种情况下,将使用readlink命令显示符号链接的实际路径。 readlink [选项] ...文件... 示例:它将打印通过命令传递的打印解析符号链接或符号链接的规范文件名,如下所示。 ...

kunkliu的博客 1000

如何用IDEA查看jar包中代码

我们在使用Java进行开放时经常会需要下载些第三方的jar包进行相应的开发。有时候相关jar包的使用文档不足,满足不了我们的特定开发使用要求,这就需要我们查看jar包内的相关代码逻辑,本文将基于IDEA工具介绍如何查看相关jar包的代码逻辑

mystonelxj的博客 2280

C语言:获取当前路径(readlink()函数)

程序: #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;unistd.h&amp;gt; char * get_exe_path( char * buf, int count) { int i; int rslt = readlink(&quot;/proc/self/exe&quot;, buf, count - 1); if (rslt &amp;lt; 0

Linux 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

readlink函数_Python中的`readlink -m`等效函数以获取规范的文件名

readlink函数readlink -m can get canonical file name by resolving every symlinks in every component of the given path recursively. In Python, the os.readlink() function does not do so. Any equivalent fun...

cuma2369的博客 746

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

linux readlink(),readlink()函数 Unix/Linux

readlink -读符号链接的值内容简介#include ssize_t readlink(const char *path, char *buf, size_tbufsiz);描述readlink() places the contents of the symbolic linkpathin the bufferbuf, which has sizebufsiz.readlink() doe...

weixin_42125867的博客 944

linux关于readlink函数获取运行路径的小程序

from:http://zhangwenxin82.blog.163.com/blog/static/11459595620091012105122327/ 2009-11-12 10:51:22|  分类: linux applicatio|字号 订阅 相关函数: stat, lstat, symlink 表头文件: #include 定义函

djzhao的专栏 1万+

Linux Shell的dirname和readlink的使用

1、背景 有时候写一个脚本,然后在脚本中调用makefile等一些列操作,在脚本中希望有一个固定的路径… 例如:下面有一个场景,你是无法预知用户是哪个路径下敲几build.sh的 而在build.sh中,你有希望有一个确切的路径,才好调用makefile文件 make -f Locals/Code/makefile.mk “$@” 2、对策和方法 使用dirname和readlink命令获取执行makefile文件的路径 cd $(dirname $(readlink -f $0)) cd …/…

baron-周贺贺-代码改变世界ctw 1412

C/C++获取当前路径、获取任意pid完整路径(readlink函数)

【代码】C/C++获取当前路径、获取任意pid完整路径(readlink函数)

墨痕诉清风的博客 3259

readlink

相关函数: stat, lstat, symlink 表头文件: #include 定义函数:int  readlink(const  char *path,  char *buf, size_t  bufsiz); 函数说明:readlink()会将参数path的符号连接内容到参数buf所指的内存空间,返回的内容不是以NULL作字符串结尾,但会将字符串的字符数返回。若参数bufsiz小于

xueli1991的博客 546

QTableWidget详解(样式、右键菜单、表头塌陷、多选等)

在Qt的开发过程中,时常会用到表单(QTableWidget)这个控件,网上的资料不少,但是都是最基本的,有一些比较经常遇到的问题也说得不太清楚。所以,今天就在这里总结一下! 以下为个人模拟Windows资源管理器的一个表单 一、设置表单样式 table_widget->setColumnCount(4); //设置列数 table_widget->hor...

weixin_30263277的博客 203

Windows/Linux获取当前运行程序的绝对路径

GetModuleFileNameA()函数获取绝对路径,不过文件路径中的反斜杠需要进行替换。

生活需要深度 1020

perl windows readlink

在windows 下使用 readlink 读取符号链接,发现报如下错误: Use of uninitialized value $where in print at C:\Do......, 解决办法是: readlink 依赖于symlink, 如果想在windows中使用symlink, 则需要下载模块 Win32:: Symlink, 同理,如果要想使用readlink, 同样

彡禅_sunshine的专栏 1911

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

相关函数:stat, lstat, symlink头文件:#include 定义函数:int readlink(const char * path, char * buf, size_t bufsiz);函数说明:readlink()会将参数path 的符号连接内容存到参数buf 所指的内存空间, 返回的内容不是以NULL作字符串结尾, 但会将字符串的字符数返回. 若参数bufsiz 小于符号连接...

weixin_36420089的博客 497

【busybox记录】【shell指令】readlink

readlink指令用法

44083579的博客 1235

C语言文件权限/数学函数总结

C语言文件权限/数学函数总结文件权限函数整体概述 access():判断是否具有存取文件的权限 alphasort():依字母顺序排序目录结构 chdir():改变当前的工作目录 chmod():修改文件权限 chown():改变文件所有者 chroot():改变文件根目录 closedir():关闭目录 fchdir():改变当前工作目录 fchmod():修改文件的权限 fchown():改变文

没有最好,只有更好! 1851
上一篇: unix环境高级编程-4.16-符号链接
下一篇: unix环境高级编程-4.18-文件时间
ctreewang
博客等级 码龄16年 1608粉丝 276原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值