Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

block6 / run

.c
Скачиваний:
9
Добавлен:
15.03.2015
Размер:
1.7 Кб
Скачать
#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]);//в дочернем процессе вызываем execvp(), argv[1] - имя запускаемой программы
     perror("execl");
     return EXIT_FAILURE; // Never get there normally
   }
   else {
     if (wait(&status) == -1) { //приостанавливает процесс и возвращает его PID
       perror("wait");
       return EXIT_FAILURE;
     }
     if (WIFEXITED(status))  //возвращает 1, если завершился добровольно
       printf("Child terminated normally with exit code %i\n", WEXITSTATUS(status));//узнаем код завершения 
     if (WIFSIGNALED(status)) //возвращает 1, если выполнение было завершено сигналом
       printf("Child was terminated by a signal #%i\n", WTERMSIG(status));//номер сигнала 
     if (WCOREDUMP(status))
       printf("Child dumped core\n");
     if (WIFSTOPPED(status)) //возвращает значение 1, если выполнение процесса было приостановлено сигналом, номер которого возвращает макрос WSTOPSIG

       printf("Child was stopped by a signal #%i\n", WSTOPSIG(status));
   }
   return EXIT_SUCCESS;
}
Соседние файлы в папке block6
  • #
    15.03.20157.42 Кб9nozombies
  • #
    15.03.2015696 б10nozombies.c
  • #
    15.03.2015575 б9nozombies.c~
  • #
    15.03.20151.15 Mб10otchet.odt
  • #
    15.03.20157.34 Кб9run
  • #
    15.03.20151.7 Кб9run.c
  • #
    15.03.20151.7 Кб9run.c~
  • #
    15.03.20157.24 Кб9system
  • #
    15.03.2015765 б9system.c
  • #
    15.03.2015500 б9system.c~