2013-04-17 2 views
1

Я пытался использовать excev для запуска программы, которую я создал. Мне нужно сказать что-то вроде execv("./myprogram");. Однако это не работает. Я пробовал execv("myprogram");. Помогите кому-нибудь?excev() help: могу ли я использовать «./program»?

+0

Определите, что «не работает». –

+0

Он выдает сообщение об ошибке. В errno: он говорит, что он не существует или что у программы нет разрешения. – aglareb

+0

Что, вероятно, означает, что вы используете свой код в другом каталоге, чем вы думаете. Попробуйте добавить 'cout << getcwd() << endl;' или что-то подобное, чтобы показать, что такое ваш текущий рабочий каталог. –

ответ

0
const char *path = "./myprogram"; 
const char *arg0 = path; 

if (execl(path, arg0, (char *) NULL) == -1) { 
    perror("execl"); 
} 

Попробуйте это. Первый аргумент - это имя программы, а rest - аргументы командной строки. Первый аргумент командной строки традиционно является именем программы ($0 в сценарии оболочки). Таким образом, вы передаете имя программы дважды, по сути. Конец списка аргументов обозначен (char *) NULL.

Если это не работает, убедитесь, что текущий каталог верен.

+0

только проблема с ошибкой arg – aglareb

+0

Не работает ... что я сделал не так? = 'execvp (" ./ writer ", (char * const *)" ./ writer "/ *, (const char *) args * /);'. Утром сегодня утром. – aglareb

Смежные вопросы