LINUX.ORG.RU

execvp


0

0

Есть у меня два казателя на char: char *prog, arg;
Я их инициализирую: prog = new char [255]; arg = new char [255];
Потом копирую в них строки.

При попытке использовать их в execvp возникают ошибки:
execvp(prog, arg);

make:
fer.ui.h:56: error: cannot convert `char*' to `char* const*' for argument `
2' to `int execvp(const char*, char* const*)'

Ответ на: комментарий от godexsoft

(const* char*)arg или можт еще хитрее.. не помню, юзал гдето но смотреть лень.. ищи ответ в гугле :)

godexsoft
()

rubbish :

arg не char* arg , а char *const argv[]

Тебе надо сделать цикл по (число параметров+2), каждый (кроме последнего) распределить и засунуть туда строку (в нулевой элемент -- еще раз название программы), а последнему присвоить NULL.

Die-Hard ★★★★★
()
Ответ на: комментарий от rubbish

> Отлично! Сработало!

Это случайность. Такой код работать не должен. Объяснение про двойной указатель и необходимость устройства цикла было верным, а совет про явное приведения типов - наоборот.

anonymous
()
Ответ на: комментарий от anonymous

Поддерживаю. в приведённом коде сверх етого имеет место buffer overflow. А вообще rubbish похоже ничего начал писать на С++ недоучив С. помоемому ему нужно букварь почитать

cvv ★★★★★
()
Ответ на: комментарий от cvv

>помоемому ему нужно букварь почитать

Когда человек задает дурацкие вопросы, это не очень хорошо, но и не очень плохо. Но когда некоторые дают дурацкие ответы (я про google и про приведение типов) -- это уже просто ни в какие ворота.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.