gpt4 book ai didi

c++ - mkdir in/tmp 不工作 : "Permission Denied"

转载 作者:太空宇宙 更新时间:2023-11-04 11:48:20 24 4
gpt4 key购买 nike

我正在尝试编写一个程序来处理应用程序的日志记录。这应该将日志写入 /tpm/app-name/log.txt。为此,我需要在编写之前创建目录 app-name,以防它不存在。但是,我的代码不会创建该目录,即使它以正确的权限运行也是如此。

我试过: * 使用chdir 移动到/tmp,然后创建app-name 目录 * 以 root 权限运行程序(这是不理想的,并且由于第 65 行无法访问系统其余部分正在运行的当前环境而导致代码错误)。

我希望这个程序能够在系统的任何地方工作。

我当前的 C++ 代码:

#include <iostream>
#include <string>
#include <cstdlib>
#include <fstream>
#include <bits/stdc++.h>
#include <sys/stat.h>
#include <sys/types.h>

using namespace std;

int main(int argc, char* argv[])
{
string name = argv[1];
string DIR = "/tmp/" + name;
string LOG_LOCATION = DIR + "/log.txt";
int len = DIR.length();
char LOG_DIR[len + 1];
strcpy(LOG_DIR, DIR.c_str());
string OUTPUT_LOG = "Some error log text";
ofstream log;
cout << OUTPUT_LOG << endl;
if (mkdir(LOG_DIR, 1777) == -1)
{
cerr << "ERROR: " << strerror(errno) << endl;
}
else
{
cout << "Directory created";
}
log.open (LOG_LOCATION);
log << OUTPUT_LOG << endl;
log.close();
}

使用该程序时,代码编译良好,甚至运行良好。它只是没有像我期望的那样创建目录。因此,它也不会生成日志文件。

谢谢!

最佳答案

所以我觉得这里真的很愚蠢,但我想出了我自己的问题的答案是什么。

首先,我在 stdin 上传递了错误的信息(程序使用此信息创建了正确的文件夹,而我在其中一个选项上的输入格式错误,因此无法创建文件夹)。

其次,正如@Mark Plotnick 在第四条评论中所指出的,以及稍后提到的其他几位评论,我需要在使用 mkdir 的行上为我的权限集添加一个前导零。

故事的寓意:确保您在 stdin 上传递了正确的信息并获得了正确的权限。 XD

关于c++ - mkdir in/tmp 不工作 : "Permission Denied",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56895066/

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