当前位置: 动力学知识库 > 问答 > 编程问答 >

windows - Java: dealing properly with pipes as stdin

问题描述:

I get a weird error ("The process tried to write to a nonexistent pipe.") if I stop reading from piped input, from a program that works fine for non-piped input. How can I avoid causing this error?

code:

package com.example.test;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

public class PipeTest {

static public void main(String[] args) throws IOException

{

BufferedReader r = new BufferedReader(new InputStreamReader(System.in));

int i = 0;

while (i < 10)

{

String s = r.readLine();

if (s == null)

break;

++i;

System.out.println(i);

}

}

}

runtime output (testfile.txt is just a large text file with more than 10 lines):

C:\proj\java\test-pipe\bin>java com.example.test.PipeTest < ../testfile.txt

1

2

3

4

5

6

7

8

9

10

C:\proj\java\test-pipe\bin>type ..\testfile.txt | java com.example.test.PipeTest

1

2

3

4

5

6

7

8

9

10

The process tried to write to a nonexistent pipe.

网友答案:

The error is coming from your command shell, not from the Java program. It's complaining because "type" is still trying to write to its output, but that pipe was abruptly closd when the Java program terminated.

分享给朋友:
您可能感兴趣的文章:
随机阅读: