powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Java и FIFO
9 сообщений из 9, страница 1 из 1
Java и FIFO
    #33071910
Что-то не так?

Пытаюсь разобратся как работать с FIFO устройствами в Linux. Написал
два исходника.

reader.java
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
import java.io.*;
import java.util.*;

public class reader{
    public static void main(String[] args)
    {
	try{    	    
	    System.out.print("\nTrying to create InputStream ");
	    InputStream FIS=new FileInputStream(args[ 0 ]);
	    System.out.println("OK");
	    int res= 0 ;
	    int count= 0 ;
	    System.out.println("\nReader ready");
	    boolean state=true;
	    while(state)
	    {
	        res=FIS.read();
		System.out.print('.');
		count++;		
	    }
	    FIS.close();
	    System.out.println("\nReader process complete. There are "+count+" bytes");
	}
	catch(Exception Ex)
	{
	    System.out.println(Ex);
	}
	
    }
}

writer.java
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
import java.io.*;
import java.util.*;

public class writer{
    public static void main(String[] args)
    {
	try{
    	    Random r=new Random();
	    System.out.println("\nTrying to create OutputStream ");	    
	    OutputStream FOS=new FileOutputStream(args[ 0 ]);
	    System.out.println("OK");
	    int res= 0 ;
	    int size= 10000 ;
	    int v;
	    boolean err;
	    for(int i= 0 ;i<size;i++)
	    {
		v=r.nextInt( 256 );
		FOS.write(v);
		System.out.print('.');		
	    }
	    FOS.close();
	    System.out.println("\nWriter process complete! There are "+size+" bytes wrote.");
	}
	catch(Exception Ex)
	{
	    System.out.println(Ex);
	}
    }
}

Создаю FIFO-файл

Код: plaintext
1.
> mknod stream1 p

Запускаю в одной сессии reader, а в другой врайтер

Код: plaintext
1.
2.
3.
> java reader stream1

> java writer stream1

Ридер завершает работу нормально, a врайтер вылетает с исключением

Код: plaintext
1.
java.io.IOException: Broken pipe

У кого-нибудь есть соображения?


P.S. У меня RedHatLinux(Fedora), Java(TM) Standard Edition (build 1.5.0-b64).)
...
Рейтинг: 0 / 0
Java и FIFO
    #33072004
Да. Забыл добавить. Цикл до 10000 не доходит.
...
Рейтинг: 0 / 0
Java и FIFO
    #33072207
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ситник ДимаДа. Забыл добавить. Цикл до 10000 не доходит.
А до куда доходит?
...
Рейтинг: 0 / 0
Java и FIFO
    #33072313
По разному. Обычно 200-300 байтов прочтет и вываливается. Случайный процесс будто.

Да! И еще я подправил ридер. Так правильнее.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
import java.io.*;
import java.util.*;

public class reader{
    public static void main(String[] args)
    {
	try{    	    
	    System.out.print("\nTrying to create InputStream ");
	    InputStream FIS=new FileInputStream(args[ 0 ]);
	    System.out.println("OK");
	    int res= 0 ;
	    int count= 0 ;
	    System.out.println("\nReader ready");
	    while((res=FIS.read())> 0 )
	    {
		System.out.print('.');
		count++;		
	    }
	    FIS.close();
	    System.out.println("\nReader process OK. There are "+count+" bytes");
	}
	catch(Exception Ex)
	{
	    System.out.println(Ex);
	}
	
    }
}
...
Рейтинг: 0 / 0
Java и FIFO
    #33072371
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может попробовать не рандомные числа в него писать, а какое-нибудь одно и тоже?
полный стектрейс тоже было бы не плохо увидеть.
хотя, скорее всего, это баг jdk64. попробуй под другой версией выполнить этот код.
...
Рейтинг: 0 / 0
Java и FIFO
    #33072442
Ладно. Попробую вечером поставить JDK 1.4.x. Хотя для меня сейчас
важнее в принципе разобратся как работать с FIFO-файлами. Можно
было попробовать на C++. Ну если у вас еще появятся мысли - пишите
в топик. Буду периодически заглядывать.

С уважением
Ситник Дима
...
Рейтинг: 0 / 0
Java и FIFO
    #33072959
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bugfix:
Код: plaintext
while((res=FIS.read())>=0)
...
Рейтинг: 0 / 0
Java и FIFO
    #33073142
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты после кажного цикла попробуй вставить
Код: plaintext
1.
System.out.flush()
Может, поможет...
...
Рейтинг: 0 / 0
Java и FIFO
    #33073685
XMBugfix:
Код: plaintext
while((res=FIS.read())>=0)


Пепел на мою голову!

Спасибо.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Java и FIFO
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]