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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
#1

execlp error - C++

11.01.2014, 17:38. Просмотров 456. Ответов 11
Метки нет (Все метки)

Вот код который работает, но не видит параметры (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
2442 / 1614 / 235
Регистрация: 24.11.2012
Сообщений: 3,962
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
2442 / 1614 / 235
Регистрация: 24.11.2012
Сообщений: 3,962
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
2442 / 1614 / 235
Регистрация: 24.11.2012
Сообщений: 3,962
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
2442 / 1614 / 235
Регистрация: 24.11.2012
Сообщений: 3,962
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
2442 / 1614 / 235
Регистрация: 24.11.2012
Сообщений: 3,962
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++ Error LNK1120, Error LNK2019
C++ Error E2141 Declaration syntax error
Error C2106 или error C2440 C++
Error C2061: syntax error : identifier 'h' C++
C++ Error C2143: syntax error : missing ';' before '.'

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

Или воспользуйтесь поиском по форуму:
0x10
2442 / 1614 / 235
Регистрация: 24.11.2012
Сообщений: 3,962
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
Ответ Создать тему
Опции темы

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