<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: потоки и чтение порта</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/6833.html</link>
    <description>помогите советом.&lt;br&gt;&lt;br&gt;читаю данные с ком порта с помощью read&lt;br&gt;&lt;br&gt;в main() все работает.&lt;br&gt;&lt;br&gt;но если я пытаюсь прочитать точно также в другой функции или в созданном потоке то ничего не прочитывается. само собой передавал номер файла в аргументе, пробовал сделать все переменные глобальными. но не в потоме не просто в вызванной функции ничего с порта не читается.&lt;br&gt;&lt;br&gt;вот функция потока&lt;br&gt;&lt;br&gt;-------------------------------------------------&lt;br&gt;void * read_thread_function (void *arg)&lt;br&gt;&#123;&lt;br&gt;int rb;&lt;br&gt;char *rbuf;&lt;br&gt;int i;&lt;br&gt;while (1)&lt;br&gt;&#123;&lt;br&gt;rb = read (fd, rbuf);&lt;br&gt;printf (&quot;&#092;nread &#037;i bytes&#092;n&quot;,rb);&lt;br&gt;for (i=0;i&amp;lt;rb;i++) putchar (rbuf&#091;i&#093;);&lt;br&gt;sleep (1);&lt;br&gt;&#125;&lt;br&gt;return;&lt;br&gt;&#125;&lt;br&gt;-----------------------------------------------&lt;br&gt;&lt;br&gt;получается: read 0 bytes&lt;br&gt;&lt;br&gt;точно такой же код в функции main работает как надо.&lt;br&gt;</description>

<item>
    <title>потоки и чтение порта (jd)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/6833.html#9</link>
    <pubDate>Fri, 12 Oct 2007 17:03:44 GMT</pubDate>
    <description>В приведённом выше куске кода, как вам уже писали, вы пытаетесь читать данные неизвестно куда (указатель rbuf не проинициализирован). К тому же не указывая, сколько читать (фактически, произвольное количество). Так что если у вас используется именно такой код, то его работа - чистое совпадение и он ещё неоднократно будет то работать, то вдруг нет.&lt;br&gt;&lt;br&gt;man read(2)&lt;br&gt;</description>
</item>

<item>
    <title>потоки и чтение порта (tux2002)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/6833.html#8</link>
    <pubDate>Fri, 12 Oct 2007 17:02:40 GMT</pubDate>
    <description>то есть видеть то он может но Вам тогда надо почитать про мютексы и семафоры&lt;br&gt;</description>
</item>

<item>
    <title>потоки и чтение порта (tux2002)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/6833.html#7</link>
    <pubDate>Fri, 12 Oct 2007 16:50:20 GMT</pubDate>
    <description>вообще не понимаю как трид может видеть что то кроме аргумента в него переданного. Если надо создавай структуру, передавай на неё указатель,разыменовывай и используй.&lt;br&gt;</description>
</item>

<item>
    <title>потоки и чтение порта (bopurod)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/6833.html#6</link>
    <pubDate>Fri, 12 Oct 2007 12:55:41 GMT</pubDate>
    <description>всем большое спасибо, разобрался в чем дело.&lt;br&gt;когда передаеш функции указатель на int и пытаешся использовать именно ту переменную через указатель то, не работет.&lt;br&gt;если записать содержимое в отдельную переменную то работает.&lt;br&gt;но при условии, что опции порта доступны.&lt;br&gt;те структура termios должна быть тоже доступна.&lt;br&gt;можно получить на нее указатель, или просто объявить как глобальную переменную.&lt;br&gt;:)&lt;br&gt;</description>
</item>

<item>
    <title>потоки и чтение порта (Sot)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/6833.html#5</link>
    <pubDate>Fri, 12 Oct 2007 12:24:44 GMT</pubDate>
    <description>&amp;gt;в main() все работает. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;но если я пытаюсь прочитать точно также в другой функции или в &lt;br&gt;&amp;gt;созданном потоке то ничего не прочитывается.&lt;br&gt;&lt;br&gt;Покажи, как COM инициализируешь. В свое время сам на подобные грабли наступал. Делал все по извесной доке, а в ней ошибка присутствует. :( Там в одном месте &apos;&amp;&apos; не хватает.&lt;br&gt;</description>
</item>

<item>
    <title>потоки и чтение порта (bopurod)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/6833.html#4</link>
    <pubDate>Fri, 12 Oct 2007 12:13:26 GMT</pubDate>
    <description>&amp;gt;&amp;gt;А как передаётся fd? Собственно arg и д.б. указатель на fd, а &lt;br&gt;&amp;gt;&amp;gt;потом его нужно привести к нужному типу и использовать в read. &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;а по моему это хорошо что считываются всего 0 байтов, потому что &lt;br&gt;&amp;gt;если считать чуть больше то будет какая нибудь фигня типа срыва &lt;br&gt;&amp;gt;стека или еще чего нибудь. &lt;br&gt;&amp;gt;нельзя же считывать что то из файла, в неинициализированный буфер &lt;br&gt;&lt;br&gt;непонимаю, про какой буфер идет речь? может напишешь код?&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>потоки и чтение порта (bopurod)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/6833.html#3</link>
    <pubDate>Fri, 12 Oct 2007 12:11:11 GMT</pubDate>
    <description>&amp;gt;А как передаётся fd? Собственно arg и д.б. указатель на fd, а &lt;br&gt;&amp;gt;потом его нужно привести к нужному типу и использовать в read. &lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt;да, именно так и делал, передавал указатель на fd, но не работает всеравно, пробовал и через глобальную переменную тоже не работает. заметил, что если в функции main не трогать порт вобще а открывать его в потоке то работает, но это не подхлодит. наверное надо передать еще какие-то указатели...&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>потоки и чтение порта (NuINu)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/6833.html#2</link>
    <pubDate>Fri, 12 Oct 2007 12:11:03 GMT</pubDate>
    <description>&amp;gt;А как передаётся fd? Собственно arg и д.б. указатель на fd, а &lt;br&gt;&amp;gt;потом его нужно привести к нужному типу и использовать в read. &lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt;а по моему это хорошо что считываются всего 0 байтов, потому что если считать чуть больше то будет какая нибудь фигня типа срыва стека или еще чего нибудь.&lt;br&gt;нельзя же считывать что то из файла, в неинициализированный буфер&lt;br&gt;</description>
</item>

<item>
    <title>потоки и чтение порта (tux2002)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/6833.html#1</link>
    <pubDate>Fri, 12 Oct 2007 11:38:04 GMT</pubDate>
    <description>А как передаётся fd? Собственно arg и д.б. указатель на fd, а потом его нужно привести к нужному типу и использовать в read.&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
