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

Возможно ли у семейства фунций exec получить возвращаемое значение? - C++

Восстановить пароль Регистрация
 
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
26.01.2014, 15:09     Возможно ли у семейства фунций exec получить возвращаемое значение? #1
Возможно ли у семейства фунций exec получить возвращаемое значение?
прототип позволяет:
C++
1
2
3
4
5
 int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg , ..., char * const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
Однако, рядом указано, что Возвращение значения какой-либо из функций exec приведет к ошибке. При этом возвращаемым значением будет -1 и глобальной переменной errno будет присвоен код соответствующей ошибки.
Я пробывал возвратить, но даже -1 не возвратился, вообще глухо!!
Возвращаемое значение необходимо для того, чтобы осознать, что процесс завершился не успешно.
Заранее в процессе прописано, что exit(-1).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2014, 15:09     Возможно ли у семейства фунций exec получить возвращаемое значение?
Посмотрите здесь:

возвращаемое значение функции C++
C++ Возвращаемое значение (класс)
C++ Возвращаемое значение функции
возвращаемое значение cos() C++
Возвращаемое значение C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2426 / 1598 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
26.01.2014, 17:22     Возможно ли у семейства фунций exec получить возвращаемое значение? #2
Функции exec возвращают значение только в случае ошибки - т.е. если процесс не удалось запустить.

То, о чем ты пишешь - это не возвращаемое значение функции, а код завершения процесса. См man 2 wait - аргумент status.
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
26.01.2014, 17:35  [ТС]     Возможно ли у семейства фунций exec получить возвращаемое значение? #3
Цитата Сообщение от 0x10 Посмотреть сообщение
Функции exec возвращают значение только в случае ошибки - т.е. если процесс не удалось запустить.

То, о чем ты пишешь - это не возвращаемое значение функции, а код завершения процесса. См man 2 wait - аргумент status.
а можете подсказать, пожалуйста, как тогда определить что процесс завершился не корректно?
0x10
2426 / 1598 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
26.01.2014, 17:45     Возможно ли у семейства фунций exec получить возвращаемое значение? #4
Проверять код возврата. Как правило, ошибке соответствует ненулевой.
Как из статуса получить код завершения написано в man 2 wait.
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
26.01.2014, 21:30  [ТС]     Возможно ли у семейства фунций exec получить возвращаемое значение? #5
Цитата Сообщение от 0x10 Посмотреть сообщение
Проверять код возврата. Как правило, ошибке соответствует ненулевой.
Как из статуса получить код завершения написано в man 2 wait.
а причём здесь функция wait??? дочерний же вызывает функцию exec?
0x10
2426 / 1598 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
26.01.2014, 21:35     Возможно ли у семейства фунций exec получить возвращаемое значение? #6
А родительский wait. И аргумент у нее - указатель на переменную status, где и сохраняется информация о завершении дочернего процесса. Все описано в мане.
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
27.01.2014, 15:45  [ТС]     Возможно ли у семейства фунций exec получить возвращаемое значение? #7
C++
1
2
3
я вот к этому пришёл:
if ((idd = wait(&status)) == (-1))
                err_sys("wait error");
но выходит ошибка: ошибка: нет декларации «err_sys» в этой области видимости
заголовочные файлы вроде включены
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <fstream>
#include <strings.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include "stdlib.h" //для system
#include <string.h>
#include <cstring> //для length() (определение длины)
#include <pthread.h> //для потока
#include <vector> //vector, iterator, algorithm для работы с vector
#include <iterator>
#include <algorithm>
#include <fstream>
#include <errno.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <stdio.h>
0x10
2426 / 1598 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
27.01.2014, 15:50     Возможно ли у семейства фунций exec получить возвращаемое значение? #8
Это не библиотечная функция, реализация должна быть приведена там же, где Вы нашли этот пример.
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
27.01.2014, 15:52  [ТС]     Возможно ли у семейства фунций exec получить возвращаемое значение? #9
Цитата Сообщение от 0x10 Посмотреть сообщение
Это не библиотечная функция, реализация должна быть приведена там же, где Вы нашли этот пример.
а вот нашёл
C++
1
#define err_sys(x) { perror(x); exit(1); }
т.е. нет стандартных функций получения кода переменной errno?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2014, 15:55     Возможно ли у семейства фунций exec получить возвращаемое значение?
Еще ссылки по теме:

Возвращаемое ссылочное значение C++
C++ Возвращаемое значение делигата
C++ Классы. Возвращаемое значение

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

Или воспользуйтесь поиском по форуму:
0x10
2426 / 1598 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
27.01.2014, 15:55     Возможно ли у семейства фунций exec получить возвращаемое значение? #10
Кажется, вопрос не в ту степь.
Если нужно узнать значение переменной errno, то подключаем errno.h и используем саму переменную errno.
Если нужно вывести какое-то читамое сообщение об ошибке - смотрим man 3 perror. Если нужно что-то большее - в последнем же мане есть ссылки на другие функции по теме.
Yandex
Объявления
27.01.2014, 15:55     Возможно ли у семейства фунций exec получить возвращаемое значение?
Ответ Создать тему
Опции темы

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