2010-12-30 2 views
2

GNU/Linux에서 서버 응용 프로그램 (Java로 작성)을 실행 중이며 입력 (stdin에서 가져온 것 같습니다)을 실행하고 일부 명령을 실행하도록 해석합니다. 터미널 윈도우에서 응용 프로그램을 실행하고 싶지는 않습니다. (데몬을 실행하고 싶습니다.)하지만 원하는대로 언제든지 명령을 입력 할 수 있기를 바랍니다. 나는 FIFO를 사용하여 그렇게 할 수있을 것이라고 생각했기 때문에 mknod를 사용하여 만들었습니다. 문제는 고양이 fifofile> 자바 ...고양이 fifofile | java ... 어떤 이유로 든 "파일을 찾을 수 없음"오류와 함께 실패합니다.FIFO를 통해 표준 입력 방향 바꾸기

고양이 만 읽고 쓸 수 있으며 fifo는 완벽하게 작동합니다.

이 문제를 해결할 수있는 방법이 있습니까? 아니면 같은 목표를 달성하기위한 다른 방법이 있습니까?

답변

8

그럼, Minecraft? 이렇게하는 가장 좋은 방법은 응용 프로그램의 콘솔 부분에 대한 선의의 tty를 갖는 것입니다. screen은 쉽게 할 수 있습니다.

+0

와우, 그냥 그 설명에서 Minecraft를 인식하는 사람을 기대하지 않았다 :) 답변 주셔서 감사합니다, 나는 그것에 대해 생각하지 않았어! – kaoD

1

java < fifofile을 사용해 보셨습니까? exec 3<&0; exec 0<fifofile; java과 같은 것은 어떨까요?

어떤 셸을 사용하고 있습니까? 쉘을 지원하는 경우 프로세스 대체 또는 코 프로세서를 사용할 수 있습니다.

+0

일반적으로 명명 된 fifo의 문제점은 커널이 독자와 작성자 쌍을 일치시키는 것입니다. 그가'java fifo'를 실행하면'java'는 "hello"와 EOF를 보게 될 것입니다. 그는 그가 시작했던 곳으로 바로 들어가게하는 FIFO의 입력면을 구동하는 또 다른 지속적인 명령이 필요합니다. –

+0

_cat> fifo_가 트릭을 할 수 있었습니까? 나는 이것이보다 복잡해지고 있다고 생각하지만 시도 할 것입니다. – kaoD

+1

'cat> fifo'는 작동 할 것입니다. * once *. 이제 문제는'java' 대신에'cat'을 사용하는 것입니다. 게다가 'cat'을 통한 버퍼링은 아마도 여러분이 기대하는 것만 큼은 아닐 것입니다. –

관련 문제