2014-11-18 1 views
1

Мой код:Невозможно получить программу, выполняемую с execv()

char* arg_list[] = { "gnuplot", "gnuplot_script.sh", NULL }; 
printf("Ready %s %s\n", arg_list[0], arg_list[1]); 
execv("gnuplot", arg_list); 
_exit(EXIT_FAILURE); 

Выход:

Ready gnuplot gnuplot_script.sh 

, но ничего не происходит (в то время как он должен появиться график).

Я скопировал вывод, без «Ready» в терминал, в том же месте, где я только что выполнил свою программу, и он работает. Поэтому я не уверен, что это проблема пути.

Что мне не хватает?

ответ

1

execv() требует путь, например:

execv("/usr/bin/gnuplot", arg_list); 

Вы можете использовать execvp(), если вы просто хотите, чтобы поставить имя файла:

execvp("gnuplot", arg_list); 

Обе функции набора errno на провал, поэтому запуск perror() на провал расскажет вам, что происходит.

+0

Черт, я попробовал с 'usr/bin/gnuplot'! Спасибо, Пол. – gsamaras