<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Таймаут выполнения кода</title>
    <link>https://ssl.opennet.dev/openforum/vsluhforumID9/10284.html</link>
    <description>Суть задачи - на одноплатнике через GPIO нужно читать состояние ног на чипе mcp23017. СИ фактически не знаю, разбираюсь в нем на примитивном уровне. С горем пополам код я все-же написал, и он на удивление даже работал, но потом я столкнулся с ситуацией когда чип mcp23017 виснет, и при попытке считать его состояние подвисает и программа. Собственно, требуется как-то обрывать выполнение приложения, допустим если оно не отработало за 5 секунд.&lt;br&gt;&lt;br&gt;Так сказать &quot;основной участок кода&quot; (все, что не касается сабжа убрал):&lt;br&gt;&lt;br&gt;#include &amp;lt;wiringPi.h&amp;gt;&lt;br&gt;#include &amp;lt;mcp23017.h&amp;gt;&lt;br&gt;&lt;br&gt;int main (int argc, char * argv&#091;&#093;) &#123;&lt;br&gt;  wiringPiSetup ();&lt;br&gt;  mcp23017Setup (101, 0x27);&lt;br&gt;&lt;br&gt;  printf(&quot;&#037;d&#092;n&quot;, digitalRead(101));&lt;br&gt;&lt;br&gt;  return 0 ;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;Проблемный участок здесь &quot;printf(&quot;&#037;d&#092;n&quot;, digitalRead(101));&quot;, а точнее digitalRead. Если чип завис, данная команда будет выполняться фактически бесконечно.&lt;br&gt;Хотелось-бы чтобы код подождал 5 секунд, и прекратил выполнение данной команды.&lt;br&gt;&lt;br&gt;Понятное дело сначала полез гуглить - нашел кучу советов использ</description>

<item>
    <title>Таймаут выполнения кода (Аноним)</title>
    <link>https://ssl.opennet.dev/openforum/vsluhforumID9/10284.html#7</link>
    <pubDate>Tue, 15 Oct 2019 07:10:53 GMT</pubDate>
    <description>&amp;gt;&amp;gt; раньше пользовался велосипедом, присел в машину - где крутить педали, ничего непонятно, &lt;br&gt;&amp;gt;&amp;gt; вернулся к пользованию велосипедом... хм, вроде ничего не упущено.&lt;br&gt;&amp;gt;&amp;gt; имо, для данного case с головой хватит - man &#123; select, read, &lt;br&gt;&amp;gt;&amp;gt; write, close, open &#125;; &lt;br&gt;&amp;gt;&amp;gt; ..и до использования thread еще n-кварталов практики &lt;br&gt;&amp;gt; Вы вообще внимательно читали мое первое и второе сообщение? Предлагаю их прочитать &lt;br&gt;&amp;gt; внимательно.&lt;br&gt;&lt;br&gt;...&lt;br&gt;&amp;gt; В данный момент мне с головой хватает ноды, &lt;br&gt;&amp;gt; пхп, баша, питона, и даже делфи. По этому практики не будет, &lt;br&gt;&amp;gt; ибо бессмысленно.&lt;br&gt;&lt;br&gt;видите ли, я часто пересекался в embed. - когда подобный подход приводит к мега костылям в дальнейшем,&lt;br&gt;и крайне рекомендуется, из моего опыта общения с создателями подобного &quot;фаст-фуда&quot;,&lt;br&gt;подтянуть С - много благодарили в дальнейшем&lt;br&gt;&amp;gt; у меня была конкретная задача, которую в моем случае на сях было &lt;br&gt;&amp;gt; реализовать быстрее и проще, так как там уже есть готовый модуль, &lt;br&gt;&amp;gt; и для компиляции достаточно билды поставить, которые я и так всегда &lt;br&gt;&amp;gt; ставлю. Я это сде</description>
</item>

<item>
    <title>Таймаут выполнения кода (Trenkle)</title>
    <link>https://ssl.opennet.dev/openforum/vsluhforumID9/10284.html#6</link>
    <pubDate>Mon, 14 Oct 2019 21:53:34 GMT</pubDate>
    <description>&amp;gt; раньше пользовался велосипедом, присел в машину - где крутить педали, ничего непонятно, &lt;br&gt;&amp;gt; вернулся к пользованию велосипедом... хм, вроде ничего не упущено.&lt;br&gt;&amp;gt; имо, для данного case с головой хватит - man &#123; select, read, &lt;br&gt;&amp;gt; write, close, open &#125;; &lt;br&gt;&amp;gt; ..и до использования thread еще n-кварталов практики &lt;br&gt;&lt;br&gt;Вы вообще внимательно читали мое первое и второе сообщение? Предлагаю их прочитать внимательно.&lt;br&gt;Я не изучаю СИ, я об этом написал, проверьте, и изучать не планирую, так как язык мне не понравился, и соответственно знания у меня поверхностные (об этом я тоже писал), по этому ваш сарказм мягко говоря неуместен. В данный момент мне с головой хватает ноды, пхп, баша, питона, и даже делфи. По этому практики не будет, ибо бессмысленно.&lt;br&gt;у меня была конкретная задача, которую в моем случае на сях было реализовать быстрее и проще, так как там уже есть готовый модуль, и для компиляции достаточно билды поставить, которые я и так всегда ставлю. Я это сделал, код рабочий, но вот только при чтении зависшего чипа про</description>
</item>

<item>
    <title>Таймаут выполнения кода (Аноним)</title>
    <link>https://ssl.opennet.dev/openforum/vsluhforumID9/10284.html#5</link>
    <pubDate>Mon, 14 Oct 2019 17:15:15 GMT</pubDate>
    <description>&amp;gt;  там неизвестно, что внутри этого digitalread(), может тупо поллинг чипового регистра. &lt;br&gt;&lt;br&gt;есть и такой момент, рассматривалась изначально правильная реализация уровнем ниже&lt;br&gt;&amp;gt;  туда таймаут вставить проще может быть, если исходники есть. Или свой read написать.</description>
</item>

<item>
    <title>Таймаут выполнения кода (Павел Отредиез)</title>
    <link>https://ssl.opennet.dev/openforum/vsluhforumID9/10284.html#4</link>
    <pubDate>Mon, 14 Oct 2019 13:12:21 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; С потоками разобрался, начал разбираться с тем, как собственно подвисшый поток прихлопнуть, &lt;br&gt;&amp;gt; и... толи это невозможно, толи неизвестно как. pthread_cond_timedwait делает это только &lt;br&gt;&amp;gt; изнутри самого потока, то есть с основоного потока его не заюзать. &lt;br&gt;&amp;gt; Да что там говорить, даже pthread_cancel зависшый поток закрывать отказывается.&lt;br&gt;&amp;gt; Достало это извращение, пускай на СЯХ лячкают красивенькие програмки гуру программирования, &lt;br&gt;&amp;gt; а я, нуб, написал скрипт на питоне с использованием SMBUS, без &lt;br&gt;&amp;gt; каких либо плагинов  или чего либо еще, при чем сам &lt;br&gt;&amp;gt; код оказался в два раза меньше предыдущего кода на СИ, в &lt;br&gt;&amp;gt; котором я еще и модуль  использовал...&lt;br&gt;&amp;gt; Всем спасибо за помощь, вопрос можно считать решенным.&lt;br&gt;&lt;br&gt;Я бы использовал fork с вызовом проблемной функции в потомке, а родителем подождал бы пять секунд и кильнул. &lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Таймаут выполнения кода (Ф)</title>
    <link>https://ssl.opennet.dev/openforum/vsluhforumID9/10284.html#3</link>
    <pubDate>Mon, 14 Oct 2019 12:48:44 GMT</pubDate>
    <description>&amp;gt;&amp;gt; Короч СИ на столько крут, что для обычного смертного в нем разобраться &lt;br&gt;&amp;gt;&amp;gt; просто анриал...&lt;br&gt;&amp;gt; ...&lt;br&gt;&amp;gt;&amp;gt; Всем спасибо за помощь, вопрос можно считать решенным.&lt;br&gt;&amp;gt; раньше пользовался велосипедом, присел в машину - где крутить педали, ничего непонятно, &lt;br&gt;&amp;gt; вернулся к пользованию велосипедом... хм, вроде ничего не упущено.&lt;br&gt;&amp;gt; имо, для данного case с головой хватит - man &#123; select, read, &lt;br&gt;&amp;gt; write, close, open &#125;; &lt;br&gt;&amp;gt; ..и до использования thread еще n-кварталов практики &lt;br&gt;&lt;br&gt; там неизвестно, что внутри этого digitalread(), может тупо поллинг чипового регистра.&lt;br&gt;&lt;br&gt; туда таймаут вставить проще может быть, если исходники есть. Или свой read написать. &lt;br&gt;</description>
</item>

<item>
    <title>Таймаут выполнения кода (Аноним)</title>
    <link>https://ssl.opennet.dev/openforum/vsluhforumID9/10284.html#2</link>
    <pubDate>Mon, 14 Oct 2019 12:31:46 GMT</pubDate>
    <description>&amp;gt; Короч СИ на столько крут, что для обычного смертного в нем разобраться &lt;br&gt;&amp;gt; просто анриал...&lt;br&gt;&lt;br&gt;...&lt;br&gt;&amp;gt; Всем спасибо за помощь, вопрос можно считать решенным.&lt;br&gt;&lt;br&gt;раньше пользовался велосипедом, присел в машину - где крутить педали, ничего непонятно, вернулся к пользованию велосипедом... хм, вроде ничего не упущено.&lt;br&gt;&lt;br&gt;имо, для данного case с головой хватит - man &#123; select, read, write, close, open &#125;;&lt;br&gt;..и до использования thread еще n-кварталов практики&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Таймаут выполнения кода (Trenkle)</title>
    <link>https://ssl.opennet.dev/openforum/vsluhforumID9/10284.html#1</link>
    <pubDate>Mon, 14 Oct 2019 11:51:05 GMT</pubDate>
    <description>Короч СИ на столько крут, что для обычного смертного в нем разобраться просто анриал... &lt;br&gt;С потоками разобрался, начал разбираться с тем, как собственно подвисшый поток прихлопнуть, и... толи это невозможно, толи неизвестно как. pthread_cond_timedwait делает это только изнутри самого потока, то есть с основоного потока его не заюзать. Да что там говорить, даже pthread_cancel зависшый поток закрывать отказывается.&lt;br&gt;Достало это извращение, пускай на СЯХ лячкают красивенькие програмки гуру программирования, а я, нуб, написал скрипт на питоне с использованием SMBUS, без каких либо плагинов  или чего либо еще, при чем сам код оказался в два раза меньше предыдущего кода на СИ, в котором я еще и модуль использовал...&lt;br&gt;Всем спасибо за помощь, вопрос можно считать решенным.&lt;br&gt;</description>
</item>

</channel>
</rss>
