<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Linux Forum &mdash; Как проверить что файл открыт на запись в данный момент ?]]></title>
	<link rel="self" href="https://linuxforum.ru/extern.php?action=feed&amp;tid=12872&amp;type=atom" />
	<updated>2011-04-17T12:08:15Z</updated>
	<generator>PunBB</generator>
	<id>https://linuxforum.ru/viewtopic.php?id=12872</id>
		<entry>
			<title type="html"><![CDATA[Re: Как проверить что файл открыт на запись в данный момент ?]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=169450#p169450" />
			<content type="html"><![CDATA[<p>Может работать с каналами? Они имеют встроенный механизм синхронизации.<br />Можно конечно использовать синхронизация работы с файлами man fcntl<br />Но зачем вам так заморачиваться, что бы синхронизировать нити, можно использовать мьютексы&nbsp; или сигнальные переменные.</p>]]></content>
			<author>
				<name><![CDATA[anonymousRU]]></name>
				<uri>https://linuxforum.ru/profile.php?id=12113</uri>
			</author>
			<updated>2011-04-17T12:08:15Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=169450#p169450</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Как проверить что файл открыт на запись в данный момент ?]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=169270#p169270" />
			<content type="html"><![CDATA[<p>Работая с потоками и их синхронизацией.</p><div class="codebox"><pre><code>void main (int arcg, char *arcv[])
{
  int a=atoi(arcv[1]);
  pthread_t wthread[a], rthread[a];
  for (int i=0; i&lt;a; i++)
    {
      pthread_create(&amp;wthread[i], NULL,kidprint, NULL);
pthread_create(&amp;rthread[i], NULL,kidread, (void*) &amp;wthread[i]);
    }
 for(int b=0; b&lt;a; b++)
    {
      pthread_join(wthread[b], NULL);
      pthread_join(rthread[b], NULL);
    }
}</code></pre></div><p>В pthread_create файл создается и открывается для записи</p><div class="codebox"><pre><code>FILE *fout; 
 char fname[20];
   sprintf(fname, &quot;%u&quot;,a);
  fout = fopen (fname, &quot;w&quot;);</code></pre></div><p>В pthread_create всё записаное в файл читается</p><p> </p><div class="codebox"><pre><code> FILE *fin;
  char fname[20];
  sprintf(fname, &quot;%u&quot;, *id);
  fin = fopen(fname, &quot;r&quot;);</code></pre></div><p>Вопрос : как в потоке чтения проверить, что в файл записывается что-то ?</p>]]></content>
			<author>
				<name><![CDATA[Jatsuk]]></name>
				<uri>https://linuxforum.ru/profile.php?id=16810</uri>
			</author>
			<updated>2011-04-17T03:15:08Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=169270#p169270</id>
		</entry>
</feed>
