Функция exec() (execute) загружает и запускает другую программу. Таким образом, новая программа полностью замещает текущий процесс. Новая программа начинает свое выполнение с функции main . Все файлы вызывающей программы остаются открытыми. Они также являются доступными новой программе. Используется шесть различных вариантов функций exec .
#include int execl(char *name, char *arg0, . /*NULL*/); int execv(char *name, char *argv[]); int execle(char *name, char *arg0, . /*,NULL, char *envp[]*/); int execve(char *name, char *arv[], char *envp[]); int execlp(char *name, char *arg0, . /*NULL*/); int execvp(char *name, char *argv[]);
- l (список). Аргументы командной строки передаются в форме списка arg0, arg1. argn, NULL . Эту форму используют, если количество аргументов известно;
- v (vector). Аргументы командной строки передаются в форме вектора argv[] . Отдельные аргументы адресуются через argv [0], argv [1]. argv [n] . Последний аргумент ( argv [n] ) должен быть указателем NULL ;
- p (path). Обозначенный по имени файл ищется не только в текущем каталоге, но и в каталогах, определенных переменной среды PATH ;
- e (среда). Функция ожидает список переменных среды в виде вектора ( envp [] ) и не использует текущей среды.
#include int main(int argc, char *argv[])
Эта программа выводит на экран строку, переданную ей в качестве аргумента. Пусть она называется hello . Она будет вызвана из другой программы с помощью функции execl() . Код вызывающей программы приведен ниже :
Как создать программу для Windows? Как стать программистом?
#include #include int main(int argc, int *argv[])
В строке execl() аргументы указаны в виде списка. Доступ к ним также осуществляется последовательно. Если использовать функцию execv() , то вместо списка будет указан вектор аргументов:
#include #include int main(int argc, int *argv[])
Источник: www.opennet.ru
Программа, которая запускает другую программу, в качестве вновь созданного процесса

Доброго времени суток! Нужно написать программу, которая запускает другую программу в качестве вновь созданного процесса. Программу я написала, и она работает, но при компиляции выдает предупреждение
Как можно исправить?
Ответы (1 шт):
В С++ строковые литералы имеют типы константных символьных массивов. Поэтому правильно будет определить массив args как
const char * args[] = < «lab3time», «/», NULL >;
чтобы избежать данного предупреждения компилятора.
Тем не менее данное определение аргументов для запускаемого процесса неверно, так как процессу разрешается изменять переданные ему параметры командной строки, а строковые литералы менять нельзя.
Поэтому вам следует объявить массивы параметров, а затем массив args как массив указателей на данные массивы.
Псевдо-вирус на python
char parm1[] = «lab3time»; char parm2[] = «/»; char * args[] = < parm1, parm2, NULL >;
Источник: husl.ru
Запуск другого приложения
Одна из наиболее важных особенностей Android это возможность приложений перекидывать пользователя в другое приложение на основе “действий”, которые нужно совершить. Например, если ваше приложение хранит адрес дома, который вы хотите показать на карте, вам не нужно создавать явление для отображения карты. Вместо этого вы можете создать запрос другому приложению с помощью объекта намерения Intent. Система запустит приложение, способное отобразить здание с указанным адресом на карте.
Как рассказывалось в первом уроке, Создание первого приложения, вы можете использовать намерения для переключения между явлениями вашего приложения. Вы это делали с помощью явных намерений, указывая класс компонента, который должен быть запущен. Однако, если вы хотите выполнить действие из другого приложения, вроде просмотра карты, вы должны использовать неявные намерения.
В данном уроке мы покажем как создавать неявные намерения для выполнения конкретных действий, и как использовать их для запуска приложений, способных эти действия выполнять.
Создание неявного намерения
В неявных намерениях не указывается имя класса компонента, который должен быть запущен, вместо этого указывается действие, которое нужно выполнить. Действие указывает на вещи, которые вы хотите сделать, например просмотр, редактирование, отправка письма или что-то еще. Часто намерения включают в себя данные, ассоциированные с действием, вроде адреса, который вы хотите посмотреть на карте, или email сообщения для отправки. В зависимости от того, какое намерение вы хотите создать, данные будут различаться, а могут совсем отсутствовать.
Если в качестве данных передается Uri, вы можете использовать простой конструктор Intent(), чтобы указать действие и данные.
Например так можно создать намерение, которое инициирует телефонный звонок, используя Uri данные для указания номера:
Источник: easyandroid.ru