Как правильно использовать ftruncate (int aux, off_set n) в c ++ - PullRequest
0 голосов
/ 07 июня 2018

Здравствуйте, я пытаюсь добавить пространство общей памяти с помощью функции, я делаю это так:

void CreateSpace(int size, std::string name){

int aux;
int aux2;


aux = shm_open(name.c_str(),  O_RDONLY | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);

if(aux > 0){
    aux2 = ftruncate(aux, sizeof(int)*2);
    if( aux2 != -1){

        works

    }else{

        It does not work
    }
}else{
Shared Memory Already Created }

Проблема в том, что я всегда получаю часть, которая не работает, я удаляю вручнуюобщие пробелы в dev / shm, но когда я пытаюсь создать новый пробел, который не существует, и пытаюсь установить определенный размер, я всегда получаю ftruncate = -1.Как я могу решить это?Я попытался использовать размер, вставленный в sizeof (int) * 2, но получаю те же результаты.

Когда я пытаюсь использовать его, вы просто называете его следующим образом:

CreateSpace(5, "/test1");

Это создаетпробел / test1, но я получаю ошибку, когда пытаюсь установить определенный размер с помощью ftruncate (int aux, off_set n) и всегда получаю ошибку 22.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...