drem1lin
@drem1lin
чуть программист, чуть чуть админ...

Как использовать execv?

Добрый вечер! Ищу помощи, я совсем недавно начал писать под Linux и в частности под Android, поэтому многим мой вопрос может показаться глупым. Я хочу запустить программку, которая складывает два числа, из другой программы для этого написал небольшую функцию, но что-то не работает, сообщений о вводе параметров я не вижу. Первое сообщение о запуске execv я вижу. Я хочу что бы вторая программа запустилась в полностью независимом процессе и первая завершилась. Вот так я это делаю:
int RunFile(char const* FileName)
{
	string LaunchName(".//");
	LaunchName.append(FileName);
	char *arg[] = {const_cast<char*>(FileName), NULL};
	int res = 0;
	int pid = 0;
	switch(pid=fork()) {
	case -1:
        printf("fork error %d\n", pid); /* произошла ошибка */
        res = -1; /*выход из родительского процесса*/
		break;
	case 0:
		printf("execv start\n"); /* произошла ошибка */
		execv(LaunchName.c_str(), arg);
		printf("execv end\n");
		res = 0;
		break;
	default:
		exit(0);
		break;
	}
	return res;
}


Что я делаю не так?
  • Вопрос задан
  • 486 просмотров
Пригласить эксперта
Ответы на вопрос 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
выглядит нормально. Можно запустить исходный процесс под strace -f и посмотреть, что происходит.
Ответ написан
@rustler2000
погромист сикраш
Крайне сумбурное описание.
execv замещает текущий процесс на новый файл.
Тоесть все что после execv запуститься _только_ если произошла ошибка. О чем собственно в мане и написано.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы