Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 8
1

Ограничить время выполнения команды

20.04.2012, 18:44. Показов 2851. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собственно сабж, как можно реализовать ограничение на время работы команды. Допустим, если если команда выполняется дольше 2с., то послать ей сигнал TERM.
Помогите...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.04.2012, 18:44
Ответы с готовыми решениями:

Ограничить время выполнения метода
Привет! Есть у меня один метод, который может выполняться очень долго, а может и за пару секунд...

Как ограничить время выполнения программы?
При выполнении макроса у меня получается(непонятно где) бесконечный цикл. Можно ли просто как-то...

Как ограничить время выполнения программы?
Добрый день! Задали написать программу, следующего содержания: "Для натурального числа сумма...

Ограничить время выполнения HTTP запроса
Всем привет Имеется код, работающий на отдельном сервисе BufferedReader rdr = null;...

4
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
20.04.2012, 19:44 2
Если есть возможность назначить свои обработчики, то хватит alarm + exec(таймеры сохраняются), если нет, то запускаешь команду в отдельном процессе и по тому же таймеру убиваешь из родительского(предварительно проверив, не умер ли он своей смертью, дабы чего лишнего не пристрелить).
0
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 8
20.04.2012, 19:47  [ТС] 3
Цитата Сообщение от NoMasters Посмотреть сообщение
Если есть возможность назначить свои обработчики, то хватит alarm + exec(таймеры сохраняются), если нет, то запускаешь команду в отдельном процессе и по тому же таймеру убиваешь из родительского(предварительно проверив, не умер ли он своей смертью, дабы чего лишнего не пристрелить).
а можно какие то примеру на эту тему? а то я первый раз с таким сталкиваюсь
0
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
20.04.2012, 20:24 4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
 
pid_t child;
 
void killer(int sig)
{
    kill(child, SIGTERM);
    puts("time is up");
    exit(0);
}
 
int main(int argc, char *argv[])
{
    //по сигналу таймера убиваем дочерний процесс
    signal(SIGALRM, killer);
    time_t timeout;
    if(argc < 3 || (timeout = atoi(argv[1])) < 1)
    {
        printf("Usage: %s timeout path [args]", argv[0]);
        exit(0);
    }
    switch(child = fork())
    {
        case 0:
            //пробуем запустить команду
            execvp(argv[2], &argv[2]);
            perror("exec");
            exit(-1);
        case -1:
            perror("fork");
            exit(-1);
        default:
            //стартуем таймер
            alarm(timeout);
            //ждём естественной смерти дочернего процесса
            wait(NULL);
    }
}
2
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 8
21.04.2012, 17:13  [ТС] 5
спасибо, буду разбираться, будут вопросы - спрошу

Добавлено через 5 часов 16 минут
возник вопрос, как можно в kill передать из аргументов другой сигнал завершения?
0
21.04.2012, 17:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.04.2012, 17:13
Помогаю со студенческими работами здесь

Как ограничить время выполнения функции
Есть функция main, которая вызывает функцию doter. doter должна работать заданное время. Я не...

Ограничить время ожидания выполнения TADOQuery.Open
Добрый день, Пишу на Delphi 7, мне нужно сделать чтобы если выполнение TADOQuery продолжается...

Время выполнения команды
Понимаю что тема избитая, но все же. Время выполнения команды ардуино 1 такт, 2 такта или n...

Время до выполнения команды
Уважаемые гуру. Не подскажите, как можно сделать допустим что бы после нажатия кнопки команда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru