<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Код на С не работает в Solaris (скажите что не так)</title>
    <link>https://opennet.dev/openforum/vsluhforumID9/9135.html</link>
    <description>Это лаба с иммитацией механизма клиент-сервер, дана как образец но серверная часть не фурычит. Канал (т.е.) файл fifo создается, но ввод при нажатии q не останавливается. поскажите что не так&lt;br&gt;&lt;br&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br&gt;#include &amp;lt;sys/types.h&amp;gt;&lt;br&gt;#include &amp;lt;sys/stat.h&amp;gt;&lt;br&gt;#include &amp;lt;errno.h&amp;gt;&lt;br&gt;#define fifo &quot;./fifo&quot; //объявление имени именованного канала&lt;br&gt;int main(int argc, char * argv&#091;&#093;)&lt;br&gt;&#123;&lt;br&gt;FILE * file_fifo; //структура для работы с файлом&lt;br&gt;char ch;&lt;br&gt;mkfifo(fifo, 0700); //создание канала, с именем fifo, с маской прав доступа 0700&lt;br&gt;file_fifo = fopen(fifo, &quot;w&quot;); //открытие канала на запись&lt;br&gt;if (file_fifo == NULL) //обработка ошибки открытия&lt;br&gt;&#123;&lt;br&gt;errno=EBADFD; //File descriptor in bad state&lt;br&gt;perror(argv&#091;0&#093;);&lt;br&gt;return -1;&lt;br&gt;&#125;&lt;br&gt;do&lt;br&gt;&#123;&lt;br&gt;ch = getchar(); //считать символ&lt;br&gt;fputc(ch, file_fifo); //запись в канал&lt;br&gt;if (ch == 10) fflush(file_fifo);//принудительная очистка буферов канала, в результате чего клиент считывает все переданные символы.&lt;br&gt;&#125; while (ch != &apos;q&apos;); //ввод символов до символа &apos;q&apos;&lt;br&gt;fclose(file_fifo); //закрытие файла&lt;br&gt;un</description>

<item>
    <title>Код на С не работает в Solaris (скажите что не так) (Вова)</title>
    <link>https://opennet.dev/openforum/vsluhforumID9/9135.html#7</link>
    <pubDate>Thu, 19 May 2011 09:55:01 GMT</pubDate>
    <description>&amp;gt;&amp;gt; Я вообще-то парень а подписался женским именем чтобы охотнее отвечали) &lt;br&gt;&amp;gt; Это ты Вове утром расскажешь...&lt;br&gt;&lt;br&gt; В принципе, вообще можно сказать такими словами  - мол стдин буфферизируется, но это только следствие причины - режима терминала. Надо терминал переводить в non-canonical-режим - tcsetattr(..). То есть правовернее говорить &quot;терминал не в том режиме&quot;.&lt;br&gt;</description>
</item>

<item>
    <title>Код на С не работает в Solaris (скажите что не так) (q)</title>
    <link>https://opennet.dev/openforum/vsluhforumID9/9135.html#6</link>
    <pubDate>Wed, 18 May 2011 19:37:04 GMT</pubDate>
    <description>попробуй исправить так:&lt;br&gt;file_fifo = fopen(fifo, &quot;w&quot;);&lt;br&gt;на &lt;br&gt;file_fifo = fopen(fifo, &quot;r+&quot;);&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Код на С не работает в Solaris (скажите что не так) (ACCA)</title>
    <link>https://opennet.dev/openforum/vsluhforumID9/9135.html#5</link>
    <pubDate>Wed, 18 May 2011 15:13:14 GMT</pubDate>
    <description>&amp;gt; Я вообще-то парень а подписался женским именем чтобы охотнее отвечали) &lt;br&gt;&lt;br&gt;Это ты Вове утром расскажешь...&lt;br&gt;</description>
</item>

<item>
    <title>Код на С не работает в Solaris (скажите что не так) (varvara_88)</title>
    <link>https://opennet.dev/openforum/vsluhforumID9/9135.html#4</link>
    <pubDate>Wed, 18 May 2011 14:58:43 GMT</pubDate>
    <description>Я вообще-то парень а подписался женским именем чтобы охотнее отвечали)&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Код на С не работает в Solaris (скажите что не так) (Вова)</title>
    <link>https://opennet.dev/openforum/vsluhforumID9/9135.html#3</link>
    <pubDate>Wed, 18 May 2011 13:34:41 GMT</pubDate>
    <description>&amp;gt;&amp;gt; не фурычит. Канал (т.е.) файл fifo создается, но ввод при нажатии &lt;br&gt;&amp;gt;&amp;gt; q не останавливается. поскажите что не так &lt;br&gt;&amp;gt; Он и не начинался. То, что ты видишь - echo из stdin. &lt;br&gt;&amp;gt; 1. Пока клиент не прицепился, fopen(fifo... блокируется &lt;br&gt;&amp;gt; 2. stdin - буферизованый. getchar ничего тебе не отдаст, пока не нажмёшь &lt;br&gt;&amp;gt;    Enter в конце строки или не заполнишь все 4К &lt;br&gt;&amp;gt; буфера. То есть while ждёт &lt;br&gt;&amp;gt;    не &quot;нажатия q&quot;, а строку или буфер, в котором &lt;br&gt;&amp;gt; попадётся q.&lt;br&gt;&amp;gt; Используй strace, чтобы понять, что происходит.&lt;br&gt;&lt;br&gt;1 - согласен, а буферизации stdin тут не видно. &lt;br&gt;</description>
</item>

<item>
    <title>Код на С не работает в Solaris (скажите что не так) (ACCA)</title>
    <link>https://opennet.dev/openforum/vsluhforumID9/9135.html#2</link>
    <pubDate>Wed, 18 May 2011 13:15:30 GMT</pubDate>
    <description>&amp;gt; не фурычит. Канал (т.е.) файл fifo создается, но ввод при нажатии &lt;br&gt;&amp;gt; q не останавливается. поскажите что не так &lt;br&gt;&lt;br&gt;Он и не начинался. То, что ты видишь - echo из stdin.&lt;br&gt;&lt;br&gt;1. Пока клиент не прицепился, fopen(fifo... блокируется&lt;br&gt;2. stdin - буферизованый. getchar ничего тебе не отдаст, пока не нажмёшь&lt;br&gt;   Enter в конце строки или не заполнишь все 4К буфера. То есть while ждёт&lt;br&gt;   не &quot;нажатия q&quot;, а строку или буфер, в котором попадётся q.&lt;br&gt;&lt;br&gt;Используй strace, чтобы понять, что происходит.&lt;br&gt;</description>
</item>

<item>
    <title>Код на С не работает в Solaris (скажите что не так) (Вова)</title>
    <link>https://opennet.dev/openforum/vsluhforumID9/9135.html#1</link>
    <pubDate>Wed, 18 May 2011 11:36:10 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; &#123; &lt;br&gt;&amp;gt; ch = getchar(); //считать символ &lt;br&gt;&amp;gt; fputc(ch, file_fifo); //запись в канал &lt;br&gt;&amp;gt; if (ch == 10) fflush(file_fifo);//принудительная очистка буферов канала, в результате &lt;br&gt;&amp;gt; чего клиент считывает все переданные символы.&lt;br&gt;&amp;gt; &#125; while (ch != &apos;q&apos;); //ввод символов до символа &apos;q&apos; &lt;br&gt;&amp;gt; fclose(file_fifo); //закрытие файла &lt;br&gt;&amp;gt; unlink(fifo); //удаление канала &lt;br&gt;&amp;gt; return 0; &lt;br&gt;&amp;gt; &#125; &lt;br&gt;&lt;br&gt;Я знаю, что не так, а ты симпатичная?&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
