|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Системный вызов exec()Чаще всего нет смысла в выполнении двух одинаковых процессов и потомок сразу выполняет системный вызов exec(), параметрами которого является имя исполняемого файла и, если нужно, параметры, которые будут переданы этой программе. Говорят, что системный вызов exec() создает низкоуровневый процесс: создаются таблицы страниц для адресного пространства программы, указанной в exec(), но программа на выполнение не запускается, так как это не полноценный процесс, имеющий идентификатор и дескриптор. Системный вызов exec() создает таблицу страниц для адресного пространства программы, переданной ему в качестве параметра, а затем заменяет старый адрес новой таблицы страниц. В результате системного вызова exec() адресное пространство процесса будет заменено на адресное пространство новой программы, а сам процесс будет возвращен в режим задачи с установкой указателя команд на первую выполняемую инструкцию этой программы. . Например: системный вызов exec() запускает команду ls. if (fork()==0) wait(0); Дополнительно: The POSIX standard declares exec functions in the unistd.h header file, in C language. Same functions are declared in process.h for DOS (see below), OS/2, and Windows. int execl(char const *path, char const *arg0,...); int execle(char const *path, char const *arg0,..., char const * const *envp); int execlp(char const *file, char const *arg0,...); int execv(char const *path, char const * const * argv); int execve(char const *path, char const * const *argv, char const * const *envp); int execvp(char const *file, char const * const *argv); Some implementations provide these functions named with a leading underscore (e.g. _execl). The base of each is exec (execute), followed by one or more letters: e – An array of pointers to environment variables is explicitly passed to the new process image. l – Command-line arguments are passed individually to the function. p – Uses the PATH environment variable to find the file named in the path argument to be executed. v – Command-line arguments are passed to the function as an array of pointers. Path The argument specifies the path name of the file to execute as the new process image. Arguments beginning at arg0 are pointers to arguments to be passed to the new process image. The argv value is an array of pointers to arguments. Arg0 The first argument arg0 should be the name of the executable file. Usually it is the same value as the path argument. Some programs may incorrectly rely on this argument providing the location of the executable, but there is no guarantee of this nor is it standardized across platforms. Envp Argument envp is an array of pointers to environment settings. The exec calls named ending with an e alter the environment for the new process image by passing a list of environment settings through the envp argument. This argument is an array of character pointers; each element (except for the final element) points to a null-terminated string defining anenvironment variable. Each null-terminated string has the form: name=value where name is the environment variable name, and value is the value of that that variable. The final element of the envp array must be null. In the execl, execlp, execv, and execvp calls, the new process image inherits the current environment variables. As a new process is not created, the process identifier (PID) does not change, but the machine code, data, heap, and stack of the process are replaced by those of the new program.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |