프로세스에 대한 출력과 다른 프로세스에 대한 입력과 동일한 콘솔을 연결하는 방법은 무엇입니까?

Nishant

suckless iiirc 클라이언트 를 사용하려고합니다 . tail -f out파일 별로 채널을들을 수 있습니다 . 그러나 echo또는 cat명령 을 시작하여 동일한 콘솔에 입력하는 것도 가능 합니까?

프로세스를 배경으로하면 실제로이 콘솔에 출력이 표시되지만 올바른 방법이 아닌 것 같습니다. 논리적으로, 나는 fd콘솔 을 가져와야한다고 생각합니다 (하지만 그것을하는 방법) 그리고 꼬리 출력을 그 fd로 강제하고 아마도 그것을 배경으로 할 것입니다. 그런 다음 현재 bash를 사용하여 cat > in.

이 작업을 수행하는 것이 실제로 괜찮습니까? 아니면 간단한 작업을 위해 많은 프로세스 오버 헤드를 생성하고 있습니까? 즉, 많은 것을 배관하는 것은 좋지만 그 작업을 많이 반복하려는 경우 이상적으로는 단일 프로세스에 있어야하는 많은 오버 헤드를 생성합니까?

클라우스

그러나 echo 또는 cat 명령을 시작하여 동일한 콘솔에 입력하는 것도 가능합니까?

단순히 아니오! cat현재 내용을 씁니다. 고양이는 콘텐츠가 나중에 성장할 것이라고 생각하지 않습니다. echo주어진 명령 줄에서 변수와 결과를 씁니다. echo 자체는 파일 내용을 쓰기위한 것이 아닙니다.

프로세스를 배경으로하면 실제로이 콘솔에 출력이 표시되지만 올바른 방법이 아닌 것 같습니다.

출력을 리디렉션하지 않으면 출력이 콘솔로 이동합니다. 그것이 설계된 방식입니다 :-)

논리적으로, 나는 콘솔의 fd를 가져와야한다고 생각한다 (하지만 그것을하는 방법). 그리고 나서 꼬리 출력을 그 fd로 강제하고 아마도 그것을 배경으로 할 필요가있다.

나는 그것이 반대 방향임을 이해합니다. 프로세스에서 stdin에 쓰려면 파이프를 사용하면됩니다. (쓸모없는) 예제는 cat이 파이프에 쓰고 다음 명령이 파이프에서 읽음을 보여줍니다. 다른 파이프 읽기 / 쓰기 시나리오로 확장 할 수 있습니다. 아래 링크를 참조하십시오.

예:

cat main.cpp | cat  /dev/stdin
cat main.cpp | tail -f

마지막 것은 파이프가 결코 발생하지 않는 더 많은 콘텐츠를 얻기를 기다리기 때문에 종료되지 않습니다.

이 작업을 수행하는 것이 실제로 괜찮습니까? 아니면 간단한 작업을 위해 많은 프로세스 오버 헤드를 생성하고 있습니까? 즉, 많은 것을 배관하는 것은 좋지만 그 작업을 많이 반복하려는 경우 이상적으로는 단일 프로세스에 있어야하는 많은 오버 헤드를 생성합니까?

당신의 업무가 얼마나 시간이 중요한지 모르겠지만 오버 헤드가 상당히 낮다고 생각합니다. 직접 작성한 프로그램에서 동일한 작업을 수행하는 것이 더 빨라서는 안됩니다. 모든 작업이 단일 프로세스에서 수행되고 파일 시스템에 대한 액세스가 필요하지 않은 경우 훨씬 더 빠릅니다. 그러나 파일 시스템 액세스와 같은 시스템 호출도 사용한다면 그다지 빠르지 않을 것입니다. 당신은 항상 당신이 얻는 일에 대해 비용을 지불해야합니다.

IO 리디렉션에 대해서는 http://www.tldp.org/LDP/abs/html/io-redirection.html을 참조하십시오.

시나리오가 더 복잡한 경우 IO 리디렉션 대신 명명 된 파이프를 생각할 수 있습니다. 이를 위해 http://www.linuxjournal.com/content/using-named-pipes-fifos-bash를 볼 수 있습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관