Как запретить iostreams :: mapped_file_sink создавать исполняемые текстовые файлы - PullRequest
2 голосов
/ 31 мая 2011

РЕДАКТИРОВАТЬ: образец кода не работает, он отсутствует .is_open (), пожалуйста, НЕ используйте его. У меня довольно странный вопрос. Я использую boost iostreams, и они работают потрясающе, но проблема в том, что файлы, которые создает программа, являются исполняемыми текстовыми файлами (я нахожусь на 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());
}

1 Ответ

3 голосов
/ 31 мая 2011

Вы можете изменить маску создания файла вашего процесса для создания неисполняемых файлов по умолчанию:

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