Форум программистов, компьютерный форум CyberForum.ru

execlp error - C++

Восстановить пароль Регистрация
 
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
11.01.2014, 17:38     execlp error #1
Вот код который работает, но не видит параметры (p2[0]):
C++
1
2
3
4
5
if((execlp(p1[0], p2[0], NULL)) < 0)
                {
                             perror("exec");
                             exit(EXIT_FAILURE);
                    }
Вот что выводит:
leha
proc_name.txt
proc_name.txt~
yyy.cpp
yyy.cpp~
zadanie.cpp
zadanie.cpp~

а вот который видит параметр (-l или -la) и выдаёт ошибку:
C++
1
2
3
4
5
if((execlp(p1[0], p2[0], " " ,NULL)) < 0)
                {
                             perror("exec");
                             exit(EXIT_FAILURE);
                    }
ошибка вот такая:
-l : невозможно получить доступ к : Нет такого файла или каталога
Почему так происходит?
ведь прототип функции:
int execlp(const char *file, const char *arg, ...);
p1[0] это переменная указатель(содржит адрес начала строки названия процесса)
p2[0] -||- только параметра процесса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
11.01.2014, 17:42     execlp error #2
Чтобы быстрее помогли, приведите Short, Self Contained, Correct (Compilable), Example (http://sscce.org/)
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
11.01.2014, 17:48  [ТС]     execlp error #3
0x10, спасибо, больше резать и укорачивать здесь нечего
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
11.01.2014, 17:52     execlp error #4
Не просто короткий, а самодостаточный и компилируемый (скопировал - скомпилировал - проверил).
Криминала в этих фрагментах не вижу, надо смотреть фактические значения аргументов exec.

Добавлено через 1 минуту
Мб там какой-нибудь шальной перевод строки или еще что-то лишнее.
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
11.01.2014, 18:13  [ТС]     execlp error #5
0x10 ,
вот так работает, методом тыка
C++
1
2
3
4
5
 if((execlp(p1[0], "-", p2[0], NULL)) < 0)
                {
                             perror("exec");
                             exit(EXIT_FAILURE);
                    }
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
11.01.2014, 18:15     execlp error #6
Посмотри в отладчике значения p1[0], p2[0]. Я ж не телепат.
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
11.01.2014, 18:21  [ТС]     execlp error #7
Цитата Сообщение от 0x10 Посмотреть сообщение
Посмотри в отладчике значения p1[0], p2[0]. Я ж не телепат.
я на сях отладчиком не пользуюсь да и не умею, тем более под Linux, ели как с TD то маленько разобрался
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
11.01.2014, 18:28     execlp error #8
У меня воспроизводится если аргументы exec содержат лишний '\n'. Смотрите в эту сторону, максимум, что я могу оттелепатить.
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
11.01.2014, 18:29  [ТС]     execlp error #9
Цитата Сообщение от 0x10 Посмотреть сообщение
У меня воспроизводится если аргументы exec содержат лишний '\n'. Смотрите в эту сторону, максимум, что я могу оттелепатить.
я уже выше готовый пример кинул, может кому понадобится
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
11.01.2014, 18:30     execlp error #10
Ну это не решение, а просто костыль.
Ф-я exec работает, надо просто правильно ее использовать.
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
11.01.2014, 19:09  [ТС]     execlp error #11
Цитата Сообщение от 0x10 Посмотреть сообщение
Ну это не решение, а просто костыль.
Ф-я exec работает, надо просто правильно ее использовать.
дак, я же разобрался с ошибкой, почему костыль? просто надо было вторым параметром ключ передать, что собственно и было сделано=)) ну это для терминальных команд, для вызова собственных процессов, надо уже смотреть, нужен ли там ключ или нет, если не нужен то просто символ пробела надо ставить
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2014, 19:30     execlp error
Еще ссылки по теме:

C++ [C++ Error] Unit1.cpp(6): E2141 Declaration syntax error
[ilink32 Error] Error: Unresolved external 'zamena (int * *) ' referenced C++
C++ Execlp завершает основную программу

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
11.01.2014, 19:30     execlp error #12
Что ж я туплю по полной... Короче, до этого ничего не было.
Вызов должен выглядеть так:
C
1
execlp("ls", "ls", "-l", NULL);
Добавлено через 4 минуты
А вообще для случая, когда команды читаются из файла, наверное, удобнее будет использовать execvp, поскольку принимает массив.
Yandex
Объявления
11.01.2014, 19:30     execlp error
Ответ Создать тему
Опции темы

Текущее время: 23:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru