Unix - статьи


         

о том, как был завершен


программа выполнит команду ls –al и возвратит сведения о том, как был завершен соответствующий процесс. Ниже приводится полный исходный текст exec.

#include <sys/types.h> #include <sys/wait.h> #include <stdlib.h> #include <stdio.h> #include <errno.h> int main(int argc, char * argv[]) { int pid, status; if (argc < 2) { printf("Usage: %s command, [arg1 [arg2]...]\n", argv[0]); return EXIT_FAILURE; } printf("Starting %s...\n", argv[1]); pid = fork(); if (pid == 0) { execvp(argv[1], &argv[1]); perror("execvp"); return EXIT_FAILURE; // Never get there normally } else { if (wait(&status) == -1) { perror("wait"); return EXIT_FAILURE; } if (WIFEXITED(status)) printf("Child terminated normally with exit code %i\n", WEXITSTATUS(status)); if (WIFSIGNALED(status)) printf("Child was terminated by a signal #%i\n", WTERMSIG(status)); if (WCOREDUMP(status)) printf("Child dumped core\n"); if (WIFSTOPPED(status)) printf("Child was stopped by a signal #%i\n", WSTOPSIG(status)); } return EXIT_SUCCESS; }

Поскольку мы хотим, чтобы новая программа не заменяла старую, а выполнялась одновременно с ней, мы раздваиваем процесс с помощью fork(). В дочернем процессе, которому fork() возвращает 0, мы выполняем вызов execvp(). Первый параметр execvp() – значение argv[1], в котором должно быть передано имя запускаемой программы. В качестве второго параметра функции передается массив аргументов командной строки, полученных программой exec, начиная со второго элемента (элемент argv[1]). Например, если список аргументов программы exec имел вид "exec", "ls", "-al", то первым параметром функции execvp() будет строка "ls", а вторым параметром – массив из двух строк "ls" и "-al" (не забывайте, что первым элементом массива аргументов командной строки должно быть имя самой программы, по которому она была вызвана). Таким образом, вы можете, например, давать команды


Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий