파이프를 영구 프로세스로 시작하는 방법

파이프를 영구 프로세스로 시작하는 방법

다음과 같이 실행 파일을 실행한다고 가정합니다.

$ echo <params> | <process>

process파이프로 실행되지 않는 경우 $ process &입력하는 동안 계속 실행됩니다. 위의 명령줄을 process지속적으로 시작하려면 무엇이 필요합니까?

고쳐 쓰다:

보다 정확하게는 스크롤 후에도 이미지가 터미널에 계속 표시되는 방식 w3mimgdisplay인 지속적인 프로세스로 실행하는 것이 가능합니다 . w3m명령줄에서 이런 방식으로 프로그램을 실행하려면 어떻게 해야 합니까?

echo -e '0;1;0;0;0;0;0;0;0;0;file.png\n4;\n3;' | /usr/lib/w3m/w3mimgdisplay

답변1

명명된 파이프가 필요한 것 같습니다.

https://askubuntu.com/questions/449132/why-use-a-named-pipe-instead-of-a-file

기본적으로 명명된 파이프를 만들고 명명된 파이프에서 입력을 받는 프로세스를 실행한 다음 원하는 것을 명명된 파이프에 전달하여 프로세스가 이를 처리하도록 합니다.

예를 들어:

mkfifo /tmp/namedpipe
tail -f /tmp/namedpipe &
echo "BOO"> /tmp/namedpipe
echo "this" > /tmp/namedpipe

...이것은 (꼬리) /tmp/namedpipe로 전송된 모든 것을 표준 출력으로 에코합니다.

cat이 EOF를 받으면 프로세스를 종료하기 때문에 cat 대신 tail을 사용합니다.

UPD. 밝히다.

이를 프로세스에 전달하려면 다음을 수행해야 합니다.

tail -f /tmp/namedpipe | yourprocess &

업2. 따라서 귀하의 경우 순서는 다음과 같습니다.

mkfifo /tmp/namedpipe 

--- 이는 프로세스에 데이터를 보낼 수 있는 진입점이 됩니다.

tail -f /tmp/namedpipe |  /usr/lib/w3m/w3mimgdisplay &

-- 그러면 원하는 영구 프로세스가 생성되고 나중에 파이프를 통해 보내는 모든 항목이 공급됩니다.

echo -e '0;1;0;0;0;0;0;0;0;0;file.png\n4;\n3;' > /tmp/namedpipe

이미지가 화면에 표시되어야 합니다.

이제부터 /tmp/namedpipe로 보내는 다른 모든 내용은 명령의 새 줄로 에코되며 화면에도 나타납니다.

관련 정보