问题标签 [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.

0 投票
2 回答
371 浏览

c++ - readlink 将 errno 设置为 ENOENT

我是一个没有经验的 Linux 程序员,我正在尝试readlink()根据这个问题和答案来学习使用。

我的调用readlink()返回 -1 并设置errno为 2 ( ENOENT)。

编码:

输出:

(自 pid 更改以来的一次迭代示例)

我尝试过的事情:

  • 编译后:(sudo ./a.out认为由于缺少权限而限制了目录访问)。结果:行为不变./a.out
  • SIGINT 程序在执行期间,并验证/proc/<pid>/exe存在。结果:它在程序的每次运行中始终存在。
  • 验证目标链接的值在 499 个字符以内。

有人可以帮助确定问题吗?阅读了readlink手册页和在线描述,以及注意到的 StackOverflow 文章,我仍然不清楚出了什么问题。

谢谢你。

0 投票
0 回答
201 浏览

c - linux内核空间中函数readlink的等价物是什么?

我有一些程序,打开了几个文件。我得到了这个过程的pid。我可以使用以下命令获取已由该进程打开的文件的文件名:

这给了我文件的完整路径。我怎样才能在内核用户空间做同样的事情?我没有找到在内核空间中使用 readlink 的方法。

0 投票
1 回答
366 浏览

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是提交的符号链接。

有没有人有类似的问题?或者您是否使用其他方法来删除旧的(不再需要)提交?

0 投票
1 回答
67 浏览

bash - readlink 无法获取文件中提到的路径名

我有一个文件,其中包含由 $1 传递的 30 个符号目标路径名。我想逐行读取此文件,并希望将每个路径的 ls 结果保存在文件 a.txt 中。问题来了,它只采用 $1 中提到的最后一个路径名。它忽略了上面的 29 行。为什么?

0 投票
1 回答
854 浏览

c - 是否可以为已执行的子进程更改“/proc/self/exe”的值?

我正在尝试使用exec系统调用来启动另一个可执行文件,但该可执行文件正在使用readlink()on/proc/self/exe来确定其文件位置。我希望它认为它与父可执行文件具有相同的位置,但它决定了它的实际位置。我认为我可以通过使用LD_PRELOAD拦截readlink()呼叫来完成类似的事情,但是有没有更简单或更直接的方法来完成这个?我只寻找可以在父可执行文件中实现的解决方案,修改子文件不是一种选择。

0 投票
1 回答
249 浏览

c - 为什么 C readlink() 有 ELOOP 作为可能的错误

背景

我阅读了关于readlink()的开放组规范,并且有一个名为 的错误ELOOP,它表明“在解析路径参数期间遇到的符号链接中存在循环。”,所以我假设这个函数将继续路径解析,直到遇到非链接文件。

但是,我做了一个实验,发现readlink()只解析传入的path参数并停在那里,但直到到达非链接文件才继续解析。

我的问题

  1. 如果是 for ,那么将其视为可能的错误realpath()是有道理的。ELOOP但是为什么它只ELOOP存在一次路径呢?readlink()
  2. 我在规范中看到了这一点“添加了 [ELOOP] 可选错误条件以符合 IEEE P1003.1a 草案标准”,这是否意味着readlink()(是否一直解析直到到达非链接文件)的行为取决于实现?

我的 gcc 版本是8.2.1

0 投票
1 回答
891 浏览

bash - 如何获得完整的路径,*允许*符号链接

我编写了接受目录名称作为参数的 bash 脚本。一个点 ('.') 是一个有效的目录名,但我有时需要知道 '.' 在哪里 是。readlinkand命令提供了一个解析的realpath路径,这没有帮助,因为我需要允许符号链接。

例如,给定目录的解析路径可能类似于/mnt/vol_01/and/then/some,而脚本以 '.' 调用。在哪里 '。' 是/app/then/some(一个符号链接,可以解析到我给出的第一条路径)。

我为解决我的问题所做的就是使用cdpwd组合来提供我想要的完整路径,到目前为止它似乎运行良好。

脚本的简化示例:

我的问题是:是我使用cdpwd获得我想要的东西的最佳方式吗?或者,还有更好的方法?

0 投票
1 回答
452 浏览

macos - “ readlink -e”有什么替代品

我使用一个 makefile 来创建一个库,它使用一个看起来像这样的 .pc 文件

问题是在 mac 上 -e 标志不起作用(即使我安装了 coreutils)。我有办法更换标志吗?

0 投票
1 回答
37 浏览

php - 使用硬链接时,如何防止同一文件被包含两次?

如何防止同一个文件被包含两次?这是我的源代码:

我收到:

它不起作用,realpath因为它只返回链接的路径,而不是目标。我已经尝试过,readlink但不幸的是,这只适用于符号链接。

0 投票
2 回答
498 浏览

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/不应该存在的。

这感觉应该相对简单。我希望我走在正确的道路上,这是我使用“”和“”的错误。但是我尝试了很多变化都没有成功。