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

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

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

execlp error - C++

11.01.2014, 17:38. Просмотров 514. Ответов 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] -||- только параметра процесса
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2014, 17:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос execlp error (C++):

Execlp завершает основную программу - C++
собственно сабж. как сие обойти?

Исправить ошибку в WxDev-C++: Error with debugging process: GDB Error: error, No source file named main.cpp - C++
Здравствуйте товарищи! Новенький я в си, установил wxDev-C++, скомпилировал, запускаешь - работает, а чтоб пошагово отладка - не...

Error LNK1120, error LNK2019, error LNK2028, queue - C++
// свойство класса Parser queue&lt;elem*&gt;* postfix = new queue&lt;elem*&gt;; // строка, из-за которой происходит ошибка ...

Ошибка в тестовом примере: "Error 1 error C2143: syntax error : missing ';' before 'if'" - C++
#include&lt;iostream&gt; using namespace std; int main(){ int x, a = 0, b = 10; (cin &gt;&gt; x).get(); while (x){ int c = x % 10; ...

Error 1 error C2664: 'CharToOemW' : cannot convert parameter 1 from 'const char *' to 'LPCWSTR' - C++
выдает вот такую ошибку - Error 1 error C2664: 'CharToOemW' : cannot convert parameter 1 from 'const char *' to 'LPCWSTR' использую visual...

[ilink32 Error] Error: Unresolved external 'zamena (int * *) ' referenced - C++
Вот это программа не работает : вот ошибка которую выдает компилятор: Error: Unresolved external 'zamena(int * *)' referenced from...

11
0x10
2475 / 1648 / 247
Регистрация: 24.11.2012
Сообщений: 4,069
11.01.2014, 17:42 #2
Чтобы быстрее помогли, приведите Short, Self Contained, Correct (Compilable), Example (http://sscce.org/)
1
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
11.01.2014, 17:48  [ТС] #3
0x10, спасибо, больше резать и укорачивать здесь нечего
0
0x10
2475 / 1648 / 247
Регистрация: 24.11.2012
Сообщений: 4,069
11.01.2014, 17:52 #4
Не просто короткий, а самодостаточный и компилируемый (скопировал - скомпилировал - проверил).
Криминала в этих фрагментах не вижу, надо смотреть фактические значения аргументов exec.

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

Ошибка error C2146: syntax error : missing ';' before identifier 'alph' - C++
Не получается откомпилировать прогу из консоля в MFC, выбивает ошибку error C2146: syntax error : missing ';' before identifier 'alph' ...

Причина ошибки [ilink32 Error] Error: Unable to perform link - C++
Когда сохранил программу и пытаюсь открыть ее снова то мне выкидывает ошибку Warning: Error detected (LME288) Error: Unable to...

Error 1 fatal error C1093: API call 'ImportFile' failed '0x80070003' : ErrorMessage: - C++
// Lab7_1.cpp : main project file. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; float y; void...

Error C2760: синтаксическая ошибка / Fatal error C1004: непредвиденное обнаружение конца файла - C++
Набыдлокодил следующее: Graph.h template&lt;class D&gt; class Graph { private: class Edge { private: int v1, v2;


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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