unix环境高级编程-4.16-符号链接

UNIX环境高级编程重点复习 文章目录名词解释题简答题程序题书上例程读程序写结果改错写程序论文《The Three Pillars of Machine Programming》相关论文《pix2code: Generating Code From a Graphical User》、sketch2code相关小组项目相关 名词解释题 1.内核(kernel): 内核是一种软件,它控制计算机硬件资源,提供程序运行环境。内核通常... 阅读详情

符号链接是指向一个文件的间接指针。他与上一节所诉的硬链接不同。硬链接直接指向文件的i节点。引入符号链接的原因是为了避开硬链接的一些限制。

  • 硬链接通常要求链接和文件位于同一文件系统中。
  • 只有超级用户才能创建指向目录的硬链接。

对符号链接以及他指向何种对象并无任何文件系统限制。任何用户都可以创建指向目录的符号链接。符号链接一般用于将一个文件或这个目录结构移动到系统中的另一个位置。

 

当使用以名字引用文件的函数的时候,应当了解该函数是否处理符号链接。也就是该函数是否跟随符号链接到达它锁链节的文件。如若该函数具有处理符号链接的功能,则其路径名参数引用由符号链接指向的文件。否则路径名参数将引用链接本身。而不是该链接指向的文件。下表列出了本章中所说明的各个函数是否处理符号链接。

 

函数

不跟随符号链接跟随符号链接
access        *
chdir        *
chmod        *
chown       *       *
creat        *
exec        *
lchown       * 
link        *
lstat       * 
open        *
opendir        *
pathconf        *
readlink       * 
remove       * 
rename       * 
stat        *
truncate        *
unlink       * 
上表没有列出mkdir,mkinfo,mknod和rmdir这些函数。其原因是当路径名是符号链接的时候,他们都出现错误返回。以文件描述符作为参数的一些函数也未在该表中列出。原因是,对富豪链接的处理是由返回文件描述符的函数同事是open进行的。chown是否跟随符号链接取决于实现。
上表中一个例外是,同时用O_CREAT和O_EXCL两者调用open函数。在此情况下,若路径名引用符号链接,open函数将出错返回。并将errno设置成EEXIST..这种处理方式的意图是阻塞一个安全性漏洞。使其具有特权的进程不会被诱骗对不适合的文件进行写操作。
实例:
使用符号链接可能在文件系统中引入循环。大多数查找路径名的函数在这种情况下发生时都将返回值为ELOOP和errno。
[devis@gdmss unix_pro]$ mkdir foo
[devis@gdmss unix_pro]$ touch foo/a
[devis@gdmss unix_pro]$ ln -s ../foo foo/testdir 
[devis@gdmss unix_pro]$ ls -l foo
总计 0
-rw-rw-r-- 1 devis devis 0 10-24 22:03 a
lrwxrwxrwx 1 devis devis 6 10-24 22:03 testdir -> ../foo

这创建了一个目录foo,它包含了一个一个名为a的恩见以及一个指向foo的符号链接。
在下图显示了这个结果,图中 以圆表示目录,以正方形表示文件

 

 从图中,我们可以看到foo到testdir是一个循环。这样的一个循环很容易消除。因为unlink并不跟随符号链接,所以可以unlink文件foo/testdir,但是如果创建一个构成这种循环的硬链接,那么就很难消除它。这就是为什么link函数burn徐构造指向目录的硬链接的原因。

 

用open函数打开文件的时候如果传递给open函数的路径名制定了一个符号链接,那么open跟随此链接达到你所指定的文件。若此符号链接所指向的文件并不存在。则open返回出错。表示不能打开该文件。这可能会使不熟悉符号练级的用户感到迷惑。如下例子

linux系统会提示这两个文件,myfile文件存在但cat后却称没有这一个文件。其原因是某与file

是一个符号链接。但该链接所指向的文件不存在。ls命令-l选型给我们提示。->前为符号链接。之后为文件。也可以是使用-F选项。

 

 

 

 

Linux Tomcat 使用符号链接解决外部工程链接问题 有时候,我们可能需要将 Tomcat 部署在一个位置,而将应用程序的工程文件存放在另一个位置。当我们创建一个符号链接时,可以将其视为一个指针,指向实际的文件或目录。在 Tomcat 中,我们可以创建一个符号链接,将其指向应用程序的工程文件夹,从而实现外部链接。通过上述步骤,我们成功地使用符号链接解决了应用程序工程文件的外部链接问题。现在,Tomcat 可以从外部位置加载应用程序的工程文件夹,从而实现了更灵活的部署和管理。因此,在创建符号链接之前,请确保文件系统支持符号链接,并且有足够的权限进行操作。 阅读详情

相关推荐

翻倍密码系统主图指标-行情买卖以及持股-翻倍密码买点-获利了结,通达信炒股软件指标公式

华森制药,上图案例走势,低位出现“开始潜伏”信号,进场红色K线持股待涨,进入“翻倍密码买点”,开启紫色K线的持续上涨,目前也达到了翻倍行情,还没出现“获利了结”的出场信号。这套操盘系统,即便出现信号没走出翻倍行情,也都是可以全身而退,获利出局,或者微微止损出场,并不代表每一个波段都能翻倍,但是走翻倍行情,你按照信号参与或持仓是不会错过的。用这个操盘系统操作,你也不需要天天的盘中看盘,不需要担心盘中的震荡,只要趋势不变,哪怕是偶尔出现跌停,也不影响行情的继续上涨,这都是上涨途中的正常调整。

weixin_69760830的博客 3674

VS报错LNK2019 无法解析的外部符号 _main,函数 “int __cdecl invoke_main(void)“ (?invoke_main@@YAHXZ) 中引用了该符号的解决方法

在 Visual Studio 中,确保将定义符号的源文件编译为项目的一部分。检查中间生成输出目录中是否有匹配的 .obj 文件。如果源文件未编译,请右键单击“解决方案资源管理器”中的文件,然后选择“属性”以检查文件的属性。“配置属性”>“常规”页应显示 C/C++ 编译器的项类型。在命令行上,确保编译了包含定义的源文件。原因2在 Visual Studio 中,确保包含符号定义的对象文件或库作为项目的一部分链接。在命令行上,确保要链接的文件列表包含对象文件或库。原因3。

cdtaogang's blog 3万+

图形学常见概念小结

前言:本文记录《unity shader入门精要》和openGL相关学习过程中一些学习要点; 文章目录PBR流程渲染管线细分着色器的底层实现,应用原理常见的色调映射算法openGl和Direct X的区别PBR流程和URP渲染管线Camera loop(剔除)MVP矩阵变换光线追踪前向渲染和延迟渲染shader和材质的区别bloom原理后处理的理解高斯模糊实现原理图像处理中的边缘检测算子 PBR流程 小结:一套基于自然界微平面理论、能量守恒、菲涅尔反射、线性空间等的科学理论所实现的基于物理的渲染系统,包含一

小谁的博客 1163

[常见错误]Tomcat找不到符号链接过去的代码

我们经常在开发过程中需要将代码关联到运行环境中去进行Debug,一般我们采用符号链接的方式进行关联,但是Tomcat找不到符号链接的地址,这是由于Tomcat默认是不支持符号链接的,我们可以通过在自己的应用中添加META-INF来改变这种默认设置。 进入到你的tomcat根目录,在进入到webapps目录找到你自己的webapp,例如你的webapp名字是myapp,只需要在myapp目录下新建...

weixin_34122810的博客 624

企业微信消息推送API实战:5步搞定可信IP与域名配置(含Python代码示例)

本文详细解析了企业微信消息推送API实战中的关键配置步骤,特别是可信IP与可信域名的配置流程。通过5个清晰步骤,结合Python代码示例,指导开发者快速完成安全通信链路搭建,避免常见错误,确保消息推送服务稳定可靠。

qsc9012345的博客 994

GD32F303实战:用定时器4触发ADC2+DMA,实现10ms精准采样1024点的完整流程

本文详细介绍了在GD32F303微控制器上使用Timer4触发ADC2配合DMA传输,实现10ms精准采样1024点的完整方案。从硬件架构设计、时钟树配置到定时器参数计算,提供了完整的工程实现流程和常见问题排查方法,适用于工业传感器监测等高实时性场景。

weixin_29194693的博客 433

为什么concat函数进行字符串拼接时,如果其中一个字符串为null,那么结果也会为null

在写sql时,使用concat函数拼接字符串,发现结果为null,检查了数据发现拼接的字段中,有的值为空,然后导致了结果为空。 因为在大部分数据库中,像MySQL、Oracle等,在使用CONCAT函数进行字符串拼接时,如果其中一个字符串为NULL,则整个结果也会返回NULL。 这是因为在SQL中,任何与NULL进行操作的结果通常也会是NULL。NULL代表缺少值或未知值,所以当你尝试将一个未知的值与其他值连接时,整个结果也变成了未知,因此返回NULL。

技术分享 3320

FreeRTOS项目:智能手表(1);

从 “最底层启动”→“系统基础配置”→“硬件驱动”→“中间件能力封装”→“上层业务功能”,分层递进、从基础到应用,就能逐步把整个项目的逻辑串联起来~

weixin_46847454的博客 1446

读书之unix环境高级编程_简单笔记1(初步)

手头有比较多的技术书籍,弃之可惜,放之惭愧,借助空闲时间,先草读,再demo整理。unix环境高级编程 草读简单整理,为下一步整理细节技术点做准备(仅个人笔记)。基本的文件操作,线程,进程,系统,进程间通信,终端控制等。

yun6853992的博客 1033

从圆形到椭圆:CenterNet中高斯热图半径的自适应优化策略

本文深入探讨了CenterNet目标检测模型中高斯热图生成策略的优化,针对传统圆形高斯核在处理长宽比差异大目标时的局限性,提出了自适应椭圆高斯核的解决方案。通过数学推导和代码实战,详细阐述了如何根据目标边界框尺寸动态计算椭圆长短轴半径,生成更贴合目标几何形状的热图监督信号,从而有效提升模型,尤其是对无人机、车辆等不规则目标的定位精度。

alice7model的博客 985

window下迁移SVN仓库到新的windows服务器

window下迁移SVN仓库到新的windows服务器

Bertram的博客 4690

UNIX环境高级编程笔记

UNIX环境高级编程 这本书应该算是圣经了,全部认真学完不太现实,所以打算粗略学一遍,只在自己认为重要的地方详略进行笔记

qq_55537010的博客 3450

52、基于格的具有解密密钥暴露抗性的可撤销(分层)身份基加密方案

本文提出了首个基于格的具有解密密钥暴露抗性(DKER)的可撤销分层身份基加密(RHIBE)方案。通过引入分层密文、分层解密密钥和级别转换密钥等创新工具,克服了格结构与传统密钥重新随机化属性不匹配的难题。该方案不仅支持可扩展的密钥撤销机制,还具备密钥委托功能,为后量子密码学领域的发展提供了新的思路和方法。

efc12345678的博客 123

《Unix环境高级编程》第四章 文件和目录--笔记

近期学习了一下UNIX环境高级编程,也做了一些相关知识点的笔记,以便后续自己的回忆以及阅读,同时方便读者的理解与应用。目录前言目录4.1函数stat、fstat、fstatat和lstat。

qq_57159889的博客 1317

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

UNIX环境高级编程习题答案——第四章

会输出符号链接所指向文件的文件类型。

qq_27637315的博客 1172

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

《UNIX环境高级编程》---4文件和目录

文件和目录一、 stat 结构和权限相关 四个stat函数:返回文件或者目录的信息结构: #include<sys/stat.h>int stat(const char * restrict pathname, struct stat*restrict buf); int fstat(int fd, struct stat* buf); int lstat(const char* restrict

yqtao的博客 2300

Devexpress16.2.6破解工具

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

《UNIX环境高级编程中文版》pdf

下载地址:网盘下载 内容简介 编辑 本书内容权威,概念清晰,阐述精辟,对于所有层次UNIX程序员都是一本不可或缺的参考书。 作品目录 编辑 第1章 UNIX基础知识 1 1.1 引言 1 1.2 UNIX体系结构 1 1.3 登录 1 1.4 文件和目录 3 1.5 输入和输出 6 1.6 程序和进程 8 1.7 出错处理 ...

weixin_30908649的博客 2635

UNIX环境高级编程习题——第四章

4.1 用stat函数替换图4-3程序中的lstat函数,如若命令行参数之一是符号链接,会发生什么变化?会输出符号链接所指向文件的文件类型。4.2 如果文件模式创建屏蔽字是777(八进制),结果会怎样?用shell的umask命令验证该结果如果创建的是目录,那么该目录的用户、组和其他人均无法访问目录,在目录下创建或删除文件,无法搜索目录下的文件。/// 如果创建的是文件,那么该文件的用户、组

kingolie的博客 1755

UNIX环境高级编程-4.11-4.16

4.11 函数chown,fchown,fchownat,lchown 下面几个chown函数可以改变文件的用户ID和组ID。如果两个参数owner或group中的任意一个是-1,则对应的ID不变。 #include<unistd.h> int chown(const char*pathname,uid_t owner,git_t group); int fchown(int fd,uid_t ow

xdyzyh的专栏 605

UNIX环境高级编程 第四章 文件和目录

文件和目录 4.1 函数stat、fstat、fstatat、lstat 函数定义: #include <sys/stat.h> int stat(const char *restrict pathname, struct stst *restrict buf);//restrict是一个限定符,主要用来修饰指针指向的内存不能被别的指针引用。 int fstat(int fd, s...

weixin_45218800的博客 798

UNIX环境编程学习笔记(10)——文件I/O之硬链接和符号链接

1 文件系统数据结构 UNIX 文件系统通过 i 节点来存储文件的信息。如图 1 所示为一个磁盘柱面上的 i 节点和数据块示意图。其中 i 节点是一个固定长度的记录项,它包含了有关文件的大部分信息。数据块用于存储文件的实际内容。每个文件的 i 节点会记录该文件的内容所占用的数据块信息。 图 1: i 节点和数据块 图 1 中还有一些信息需要进行说明: 1. 每个目录

zjy900507的博客 632

《UNIX环境高级编程》读书笔记23: 全书完整总结

历时数月,终于完成了《UNIX环境高级编程》(第3版)全书21章的学习。这本被誉为UNIX系统编程“圣经”的巨著,由W. Richard Stevens和Stephen A. Rago合著,涵盖了UNIX/Linux环境下系统级编程的方方面面。本文是对全书知识体系的系统性总结,按照内容逻辑分为六大模块,提炼核心概念、关键函数、设计模式和实践技巧,并附有代表性的代码片段和架构图,希望能为同样在学习APUE的读者提供一个清晰的导航。💡学习感悟。

3201

Unix环境高级编程第四章:文件和目录

一:文件类型 (1)普通文件 最常用的文件类型,这种文件包含了某种形式的数据。对于这种数据是文本还是二进制数据,对于unix内核而言并没有区别,普通文件内容的解释由处理该文件的应用程序来完成。对于可执行的二进制文件,内核必须理解他的格式,所有可执行的二进制文件都遵循一种标准化的格式。 (2)目录文件 这种文件包含了其他文件的名字以及指向与这些文件有关信息的指针。 对于目录文件的权限信息:r为可以读...

qq_34314736的博客 295
上一篇: UNIX网络编程初步
下一篇: unix环境高级编程-4.17-sylmink和readlink函数
ctreewang
博客等级 码龄16年 1608粉丝 276原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值