Как сделать таймаут на выполнения запроса через OCI

Blacky1979
Дата: 04.12.2009 10:55:28
Привет

Стоит задача ограничить по времени время выполнения запроса в БД. И если запрос долго висит то сделать реконнект. В общем я не придумал ничего лучше чем сделать так:

alarm(timeout);
OCIExecute(....)

if (errno==EINTR) делаем реконнект

В обработчике прерывания просто выдаю строку на экран и в логи больше ничего.

В итоге получаю полную ерунду. Программа не может прервать таким образом OCIExecute.

Как сделать таймауты на время выполнения запроса ?
Elic
Дата: 04.12.2009 11:13:10
Blacky1979
if (errno==EINTR) делаем реконнект
RTFM OCIBreak
Blacky1979
Дата: 04.12.2009 11:20:02
С этим я согласен, но после появления прерывания по таймеру не происходит выход из функции OCIExеcute
Elic
Дата: 04.12.2009 11:31:29