Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
<b>#include <unistd.h></b><b>char **environ;</b><b>int execl(const char *path, const char *arg0, ..., (char *)0);</b><b>int execlp(const char *file, const char *arg0, ..., (char *)0);</b><b>int execle(const char *path, const char *arg0, ..., (char *)0,</b><b> char *const envp[]);</b><b>int execv(const char *path, char *const argv[]);</b><b>int execvp(const char *file, char *const argv[]);</b><b>int execve(const char *path, char *const argv[], char *const envp[]);</b>Эти функции делятся на два вида.
execlexeclpexeclenullexecvexecvpargvmainЭти функции реализованы, как правило, с использованием
execveФункции, имена которых содержат суффикс
pPATHПередать значение окружению программы может глобальная переменная
environexecleexecveЕсли вы хотите применить функцию
execpsexec#include <unistd.h>/* Пример списка аргументов *//* Учтите, что для argv[0] необходимо имя программы */char *const ps_argv[] = {"ps", "ax", 0};/* He слишком полезный пример окружения */char *const ps_envp[] = {"PATH=/bin:/usr/bin", "TERM=console", 0};/* Возможные вызовы функций exec */execl("/bin/ps", "ps", "ax", 0);/* предполагается, что ps в /bin */execlp("ps", "ps", "ax", 0);/* предполагается, что /bin в PATH */execle("/bin/ps", "ps", "ax", 0, ps_envp);/* передается свое окружение */execv("/bin/ps", ps_argv);execvp("ps", ps_argv);execve("/bin/ps", ps_argv, ps_envp);А теперь выполните упражнение 11.2.
execlpДавайте изменим пример и используем вызов
execlp#include <unistd.h>#include <stdio.h>#include <stdlib.h>int main() {<i> printf("Running ps with execlpn");</i><i> execlp("ps", "ps", "ax", 0);</i> printf("Done.n"); exit(0);}Когда вы выполните эту программу, рехес.с, то получите обычный вывод команды
psDoneрехес$ <b>./рехес</b>Running ps with execlp PID TTY STAT TIME COMMAND1 ? S 0:03 init [5]...1262 pts/1 Ss 0:00 /bin/bash1273 pts/2 S 0:00 su -1274 pts/2 S+ 0:00 -bash1463 pts/1 SN 0:00 oclock1465 pts/1 S 0:01 emacs Makefile1514 pts/1 R+ 0:00 ps axКак это работает
Программа выводит первое сообщение и затем вызывает функцию
execlpPATHpsрехес$ <b>ps ax</b>Когда
psрехесniceexecСуществует ограничение для общего размера списка аргументов и окружения процесса, запускаемого функциями
execARG_MAXARG_MAX
