gpt4 book ai didi

c++ - argv 不适用于 chdir

转载 作者:太空宇宙 更新时间:2023-11-04 16:23:58 26 4
gpt4 key购买 nike

我正在尝试以下列方式使用 chdir() 将当前工作目录更改为可执行文件的路径:

#include <iostream>
#include <string>
using namespace std;

int main(int argc,char *argv[]) {

if(chdir(argv[0]) == 0) printf("In %s\n", argv[0]);
else printf("Failed to change directory\n");
}

输出是:

Failed to change directory

为什么 chdir 不能与 argv[0] 一起工作?此问题的其他解决方案也将被接受。

最佳答案

您需要使用 splitpath 或类似工具从 argv[0] 中删除可执行文件的名称。您不能 chdir 到一个文件。

[edit] 抱歉,我认为 splitpath 是 Windows 的东西...只需这样做:

char *dirsep = strrchr( argv[0], '/' );
if( dirsep != NULL ) *dirsep = 0;

现在 argv[0] 已被修剪以删除可执行文件名称。

请注意,命令行可能根本不包含任何目录。


您尝试这样做有点破坏了整个 Linux(我假设)范式...您不必知道可执行文件的存储位置。通常,您可以通过以下方式之一指定输出:

  1. 在配置文件中(例如可能保存在 /usr/local/etc 中,或用户的主目录,或在命令行中给出);

  2. 使用命令行选项;

  3. 写入标准输出。

关于c++ - argv 不适用于 chdir,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13871999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com