问题标签 [readlink]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - readlink 将 errno 设置为 ENOENT
我是一个没有经验的 Linux 程序员,我正在尝试readlink()
根据这个问题和答案来学习使用。
我的调用readlink()
返回 -1 并设置errno
为 2 ( ENOENT
)。
编码:
输出:
(自 pid 更改以来的一次迭代示例)
我尝试过的事情:
- 编译后:(
sudo ./a.out
认为由于缺少权限而限制了目录访问)。结果:行为不变./a.out
- SIGINT 程序在执行期间,并验证
/proc/<pid>/exe
存在。结果:它在程序的每次运行中始终存在。 - 验证目标链接的值在 499 个字符以内。
有人可以帮助确定问题吗?阅读了readlink
手册页和在线描述,以及注意到的 StackOverflow 文章,我仍然不清楚出了什么问题。
谢谢你。
c - linux内核空间中函数readlink的等价物是什么?
我有一些程序,打开了几个文件。我得到了这个过程的pid。我可以使用以下命令获取已由该进程打开的文件的文件名:
这给了我文件的完整路径。我怎样才能在内核用户空间做同样的事情?我没有找到在内核空间中使用 readlink 的方法。
continuous-integration - 如何在 Gitlab CI 脚本中删除符号链接的目标?
我在设置.gitlab-ci.yml
文件时遇到问题。我想删除旧的提交,所以我在(Debian)服务器上只有最新的和以前的提交。
出于某种原因,当脚本执行时,它的行为不符合预期 - 提交已正确切换,但旧的提交保留在文件夹中并且不会被删除rm -rf $(readlink <link>)
但是,如果我在服务器上使用相同的用户 SSH 并执行完全相同的步骤,则会rm -rf $(readlink <link>)
成功删除实际的符号链接目标(预期行为)。从 CI 脚本执行相同操作时,不会删除目标。
也许我错过了一些变量转义或括号?
这是我的(修剪过的).gitlab-ci.yml
文件:
我也试过这个变种:
请注意:
${PROJECT_DIR}/staging-previous
并且${PROJECT_DIR}/staging-latest
是提交的符号链接。
有没有人有类似的问题?或者您是否使用其他方法来删除旧的(不再需要)提交?
bash - readlink 无法获取文件中提到的路径名
我有一个文件,其中包含由 $1 传递的 30 个符号目标路径名。我想逐行读取此文件,并希望将每个路径的 ls 结果保存在文件 a.txt 中。问题来了,它只采用 $1 中提到的最后一个路径名。它忽略了上面的 29 行。为什么?
c - 是否可以为已执行的子进程更改“/proc/self/exe”的值?
我正在尝试使用exec
系统调用来启动另一个可执行文件,但该可执行文件正在使用readlink()
on/proc/self/exe
来确定其文件位置。我希望它认为它与父可执行文件具有相同的位置,但它决定了它的实际位置。我认为我可以通过使用LD_PRELOAD
拦截readlink()
呼叫来完成类似的事情,但是有没有更简单或更直接的方法来完成这个?我只寻找可以在父可执行文件中实现的解决方案,修改子文件不是一种选择。
c - 为什么 C readlink() 有 ELOOP 作为可能的错误
背景
我阅读了关于readlink()的开放组规范,并且有一个名为 的错误ELOOP
,它表明“在解析路径参数期间遇到的符号链接中存在循环。”,所以我假设这个函数将继续路径解析,直到遇到非链接文件。
但是,我做了一个实验,发现readlink()
只解析传入的path
参数并停在那里,但直到到达非链接文件才继续解析。
我的问题
- 如果是 for ,那么将其视为可能的错误
realpath()
是有道理的。ELOOP
但是为什么它只ELOOP
存在一次路径呢?readlink()
- 我在规范中看到了这一点“添加了 [ELOOP] 可选错误条件以符合 IEEE P1003.1a 草案标准”,这是否意味着
readlink()
(是否一直解析直到到达非链接文件)的行为取决于实现?
我的 gcc 版本是8.2.1
bash - 如何获得完整的路径,*允许*符号链接
我编写了接受目录名称作为参数的 bash 脚本。一个点 ('.') 是一个有效的目录名,但我有时需要知道 '.' 在哪里 是。readlink
and命令提供了一个解析的realpath
路径,这没有帮助,因为我需要允许符号链接。
例如,给定目录的解析路径可能类似于/mnt/vol_01/and/then/some
,而脚本以 '.' 调用。在哪里 '。' 是/app/then/some
(一个符号链接,可以解析到我给出的第一条路径)。
我为解决我的问题所做的就是使用cd
和pwd
组合来提供我想要的完整路径,到目前为止它似乎运行良好。
脚本的简化示例:
我的问题是:是我使用cd
和pwd
获得我想要的东西的最佳方式吗?或者,还有更好的方法?
macos - “ readlink -e”有什么替代品
我使用一个 makefile 来创建一个库,它使用一个看起来像这样的 .pc 文件
问题是在 mac 上 -e 标志不起作用(即使我安装了 coreutils)。我有办法更换标志吗?
php - 使用硬链接时,如何防止同一文件被包含两次?
如何防止同一个文件被包含两次?这是我的源代码:
我收到:
它不起作用,realpath
因为它只返回链接的路径,而不是目标。我已经尝试过,readlink
但不幸的是,这只适用于符号链接。
bash - 难以在 bash 中使用 readlink 混合变量和字符串来返回绝对路径
我有一个配置脚本,用户可以在其中将路径指定为标题部分中的变量。我希望他们能够使用绝对路径、相对路径和变量(因为这实际上是从另一个 shell 脚本调用的,他们从中获取变量的值)。在脚本结束时,所有路径都写入一个文本文件。
我面临的挑战是某些路径中使用的变量可能会在脚本中间发生变化。我在重新评估获得正确输出的路径时遇到了困难。
当我按照上面的操作并且满足“某些条件”时,“回声”的返回是 的绝对路径$VAR1/STRING1/Input
,而我想要的是绝对路径$VAR2/STRING2/Input
。
下面是另一种选择,我尝试InputDir_DEFAULT
通过将自身存储为字符串来停止评估直到结束。
这次 'echo' 返回已评估变量和未评估字符串的混合:($VAR2/STRING2/$DIR_PATH/Input
对我而言)看起来像/home/ubuntu/STRING2/$DIR_PATH/Input
. 它只是$DIR_PATH/
不应该存在的。
这感觉应该相对简单。我希望我走在正确的道路上,这是我使用“”和“”的错误。但是我尝试了很多变化都没有成功。