2011-11-11 7 views
0

다음과 같이 호출하여 인쇄하는 루비 스크립트를 작성합니다.CUPS의 lp는 무엇을 반환합니까?

`/usr/bin/lp -d PrinterQueue -U #{user} #{fileToBePrinted}` 

정상적으로 인쇄 오류를 처리하고 싶지만 실행할 때 lp이 반환하는 것을 판별 할 수 없습니다. 일반적으로 다음과 같은 문자열입니다.

요청 ID는 PrinterQueue-68 (1 파일)입니다.

lp이 이상한 경우에 무엇을 반환해야하는지 설명하는 곳이 있습니까?

고마워!

+0

맨 페이지를 확인 했습니까? –

+0

반환 값을 전혀 말하지 않습니다 : ( – Jay

+1

'open3'은 표준 출력, 표준 오류 및 반환 값을 얻을 수있는 방식으로 백틱보다 더 나은 호출 일 수 있습니다 (반환 값은 0이 아니어야합니다. 오류). –

답변

2

내 의견을 좀 더 자세히 설명 할 수있게하십시오.

backticks를 잊어서 Open3으로 바로 가야합니다. 특히 Open3.capture3 :

out, err, status = Open3.capture3("/usr/bin/lp -d PrinterQueue -U #{user} #{fileToBePrinted}") 

그럼 outlp에서 표준 출력을 포함하는 문자열이 될 것이다 err는 표준 오차를 포함하는 문자열이 될 것이며, statusProcess::Status 인스턴스 것이다. status.success?을 확인하여 lp 명령이 작동하는지 확인하고 작동하지 않으면 err (또는 사용자에게 err 표시)을 확인하십시오.

0

문자열 request id is PrinterQueue-68 (1 file(s))은 무엇 lp 명령을 인쇄하지 무엇 반환입니다.

lp 명령이 실패하면 0이 아닌 종료 상태가 반환됩니다. (또한 오류 메시지를 인쇄해야하지만, 그 메시지는 반드시 문서화되지 않고 한 버전에서 다음 버전으로 변경 될 수 있습니다.)

이해할 수 있듯이 백틱을 사용하여 명령을 호출 한 후 $?의 값을 쿼리 할 수 ​​있습니다 . 명령이 성공하면 $?은 0이어야합니다. 실패하면 0이 아닌 값을 갖습니다.

의견에서 @muistooshort는 open3을 사용한다고 제안합니다. 백틱을 사용하는 것보다 훨씬 강력하고 유연합니다.