c++ - 如何防止 iostreams::mapped_file_sink 创建可执行 txt 文件

标签 c++ boost boost-iostreams

编辑:代码示例已损坏,缺少 .is_open(),请不要使用它。 我有一个很奇怪的问题。我使用 boost iostreams,它们工作得很棒,但问题是程序创建的文件是可执行的 txt 文件(我在 ubuntu 上,msg 是:“”lol2.txt”是一个可执行文本文件。”)。 那么有什么方法可以使其成为常规的不可执行文件。我想更改代码,以便它不会创建可执行文件,我知道我可以在从终端或 Nautilus 创建文件后更改该文件。 顺便说一句,这是我正在使用的代码:

void write_file(const std::string& name,string data)
{
    iostreams::mapped_file_params params;
    params.new_file_size=data.size();
    params.path=name;
    iostreams::mapped_file_sink file(params);
    memcpy(file.data(),&data[0],data.size());
}

最佳答案

您可以更改进程的文件创建掩码以默认创建非可执行文件:

umask(getumask() & ~(S_IXUSR | S_IXGRP | S_IXOTH));

关于c++ - 如何防止 iostreams::mapped_file_sink 创建可执行 txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6192011/

相关文章:

c++ - boost zlib 问题

c++ - Windows 中的 Exe 在调用 GetWindowsDirectory 时 append wstring 时崩溃

c++ - : corrupted double-linked list 0xb2808cf8 C++ 错误

c++ - boost.asio 套接字接收/发送功能不好吗?

c++ - 当我向 <vector> 添加对象时出现段错误

c++ - 如何使用 Boost 解压缩压缩数据的 vector ?

c++ - 基于不同坐标系旋转图像

c++ - LLVM - 添加指令后设置 BasicBlock 的插入点会导致段错误

c++ - 如何使用 C++11 或 Boost 获取正则表达式匹配的长度?

c++ - 文件输入输出乱码