【问题标题】:How to open file with ofstream so that other users can append/write to same file?如何使用 ofstream 打开文件,以便其他用户可以附加/写入同一个文件?
【发布时间】:2017-05-23 05:03:40
【问题描述】:

我们有一个二进制文件,它创建了一个每日CSV report,其中包含一些文件名,例如 Sample_20170523,即文件名附加当前日期,但现在的问题是,当其他人在同一天运行二进制文件时,出现无法打开文件的错误.该问题的代码sn-p如下:

std::ofstream of;
of.open("FileName_20170523",ios::out);
if(!of)
  std::cout<<"Unable to open file..."<<std::endl;

所以在检查后似乎出现了这个问题,因为该文件已经由另一个用户创建。所以只是想知道c++中有没有什么机制可以给以编程方式创建的文件777权限?

【问题讨论】:

    标签: c++ linux file


    【解决方案1】:

    您可以使用chmod() 或fchmod() 更改文件的权限。

    【讨论】:

    • fchmod 需要文件描述符。 AFAIK 没有从fstream 获取 FD 的标准方法。
    • 这两种方法似乎都是非常粗暴的非c++做事方式
    • @Kapil 好吧,如果你有 C++ 17,你可以使用文件系统函数std::filesystem::permissions(),在此之前你可以使用boost::filesystem。但在此之前,您必须使用良好的旧 C 函数。
    • @Barmar 对。在这种情况下,chmod() 将是要使用的函数。
    • 您可能会发现您的编译器/库支持&lt;experimental/filesystem&gt;,如果不是“官方”文件系统库支持的话。当然值得一看。
    【解决方案2】:

    system() 允许执行系统命令。

    system("chmod 777 diretory_to_file/name");
    

    如果它已经退出,则给每个人 r+w+x

    std::ofstream of;
    of.open("FileName_20170523",ios::out);
    

    【讨论】:

      猜你喜欢
      • 2010-11-18
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-01
      • 1970-01-01
      相关资源
      最近更新 更多