问题标签 [getcwd]
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.
python - 为什么'C:'不是我认为的意思?
在 Windows 7 上,我启动了我的 IDLE Python 2.7.5 Shell:
发生了什么事,为什么必须这么复杂?
perl - cwd 和 gwtcwd 在 windows 上返回一个 linux 风格的路径
如果我运行这个脚本:
输出是:
如何获得 windows 风格的路径C:\tmp
?
c - C 中的 Unix Shell - 更改目录
我是另一个使用简单 Shell 的 CS 初学者。目前,如果传递了参数,我正在尝试更改当前目录,否则,报告到当前目录。
我尝试chdir()
在我的程序中使用,但它显然不起作用。我尝试传递一个char*
标记化的参数。我也尝试过argv[1]
,但我一定做错了什么,因为似乎两者都不起作用。
另外,我不完全确定如何使参数指针(包含目录字符串)静态,以便当我使用 putenv(ARGUMENT HERE) 时没有问题。
这是我的代码的相关部分:
指针 argmnts 指向标记化参数部分来自:char strnBuffer[1000]
已经为命令标记化:command[0] = strtok(strnBuffer, " ");
我非常感谢任何帮助/见解。
谢谢你。
c - 获取当前目录的名称(不是路径)
我已经看到了,并且我曾多次使用该函数cwd()
来获取文件夹的绝对路径,但是有一个问题,那就是是否可以使用 C 来获取文件夹的名称。
例如,假设我在这个文件夹上执行了一个程序:
如果我不为我的程序提供任何参数,我将使用cwd()
并且肯定会获得该文件夹的绝对路径。
但我想要的只是实际文件夹的名称,在这种情况下包括. 这可以在 C 中完成吗(我在 Python 和 C# 中见过)?
python - 通过符号链接启动 python 脚本
我有一个存在于“脚本”目录中的可执行 python 脚本,并且在根目录中有一个指向该脚本(用于启动文件)的符号链接。就像是:
我希望能够通过以下方式启动/运行我的脚本:
从根目录。i_build.py 脚本将尝试打开 i_Props.ini 并根据其中的内容做一些魔术。
问题是当 i_build.py 脚本通过根目录中的符号链接启动时,i_build.py 脚本将在根目录中查找其他文件(而不是存储 i_build.py 的 /scripts 目录)。
i_build.py 文件的 props 文件位置为:
并尝试打开它,然后失败。出于明显的原因,我不想硬编码路径。
在主文件中添加的快速测试os.getcwd()
证实了我的怀疑,即它认为 CWD 是根目录,并且检查__file__
表明它是符号链接(“build_i”)。
我可以做些什么来让 python 使用符号的目的地,比如__file__
名称和 CWD?
c - 正确使用 malloc
我正在尝试将我的目录路径名放在一个字符串变量上,如下所示:
我打印了一个空白,但是当我做这样的事情时
它打印正确,为什么?我的第一个 malloc 不是应该让我的变量像 dir[512]
pwd - 为什么 iget() 隐藏在 xv6 中
我正在玩xv6,这是 Unix 版本 6 的现代实现。
对于我的第一次 hack,我想实现简单的getcwd
系统调用,但是对于我应该使用哪个抽象级别有点迷茫。
- 我应该使用
struct file
界面吗? - 或者也许是
struct inode
界面? - 重要的是,它似乎甚至可以纯粹在用户空间中实现。
我开始通过struct inode
操作来实现它。我天真的想法是检索proc->cwd
,然后是readi()
它的第二个条目 ( ..
),扫描它以检索我以前inum
的 ,依此类推,直到我找到根。
看起来性能不是很好,但这适合第一次破解。
不过我的问题是我需要从sfs.c:iget()
中检索到 s 中的 a 。我注意到这是静态的,没有声明,这让我有点恼火,但我找不到原因。struct inode
inum
dirent
iget()
fs.c
defs.h
所以,这是我的问题。为什么它iget()
被故意隐藏在内核的其余部分之外?
c - getcwd() 的 GNU C 实现的性能
根据关于 getcwd() 的 GNU Lib C 文档...
此函数的 GNU C 库版本还允许您为缓冲区参数指定空指针。然后 getcwd 自动分配一个缓冲区,与 malloc 一样(请参阅无约束分配)。如果大小大于零,那么缓冲区就是那么大;否则,缓冲区将与保存结果所需的一样大。
我现在提请您注意使用 GNU 文档中描述的标准 getcwd() 的实现:
这对于可移植性和稳定性来说似乎很好,但它也看起来像是对所有分配和释放内存的笨拙妥协。鉴于可能会频繁调用该函数,这是否可能是性能问题?
*说“profile it”很容易,但这并不能说明所有可能的系统;现在或未来。
working-directory - Perl Cwd::cwd 和 Cwd::getcwd 函数有何不同?
问题
通常,不考虑任何特定平台,PerlCwd::cwd
和in之间有什么区别?Cwd::getcwd
为什么 Perl 两者都有?预期用途是什么,我应该在哪些场景中使用哪一个?(示例用例将不胜感激。)这有关系吗?(假设我不混合它们。)任何一个的选择是否会以任何方式影响便携性?哪一个在模块中更常用?
即使我解释手册是说除了极端情况cwd
是`pwd`
并且getcwd
只是调用getcwd
from unistd.h
,实际区别是什么?无论如何,这只适用于 POSIX 系统。
我总是可以阅读实现,但这并没有告诉我这些函数的含义。实现细节可能会改变,没有那么定义的意思。(否则会发生重大变化,这是一件严肃的事情。)
说明书是怎么说的
引用 Perl 的Cwd 模块手册页:
这些函数中的每一个都在没有参数的情况下调用,并返回当前工作目录的绝对路径。
获取cwd
my $cwd = getcwd();
返回当前工作目录。
公开 POSIX 函数 getcwd(3) 或在它不可用时重新实现它。
cwd
my $cwd = cwd();
cwd() 是当前架构最自然的形式。对于大多数系统,它与 `pwd` 相同(但没有尾随行终止符)。
在注释部分:
- 实际上,在 Mac OS 上
getcwd()
,fastgetcwd()
和fastcwd()
函数都是函数的别名cwd()
,在 Mac OS 上,函数称为 `pwd`。同样,该abs_path()
函数是fast_abs_path()
好的,我知道在 Mac OS 1上 和 之间没有区别getcwd()
,cwd()
因为两者实际上都归结为`pwd`
. 但是在其他平台上呢?(我对 Debian Linux 特别感兴趣。)
1经典 Mac OS,而不是 OS X。$^O
值分别是 Mac OSMacOS
和darwin
OS X。谢谢@tobyink和@ikegami。
还有一个小问题:如何避免对其他功能非常相似的模块提出类似的问题?除了挖掘实现之外,是否有一种发现差异的通用方法?(目前,我认为如果文档不清楚预期用途和差异,我必须请教更有经验的人或自己阅读实现。)
c++ - iOS getcwd 替代品
我正在将我的 C++ OpenGL 应用程序移植到 iOS,它使用 getcwd 函数来加载着色器。在 iOS 中,'getcwd' 只返回一个斜杠,我无能为力。或者有什么好的方法可以在 iOS 上加载文件?
编辑:找到解决方案!基于 POSIX 的代码。