명령에 대한 입력 파일 스트림

명령에 대한 입력 파일 스트림

이 명령에 파일 대신 파일 스트림을 보내려면 어떻게 해야 합니까?

/usr/local/bin/wkhtmltopdf --title "$SUBJECT" -q $SOURCEFILE $OUTPUTFILE

파일 스트림은 PHP의 문자열에서 나옵니다.

답변1

/dev/stdinPHP를 사용하여 이 작업을 수행 할 수 있어야 합니다.proc_open(). 다음 명령을 사용하여 프로세스를 시작하십시오.

wkhtmltopdf --title "$SUBJECT" -q /dev/stdin $OUTPUTFILE

그리고 변수의 HTML을 실행 중인 프로세스로 파이프합니다.

답변2

파이프에서 읽은 이름으로 파일을 여는 프로그램을 만들려면 특별한 장치 이름을 지정하십시오 /dev/stdin. 예를 들면 다음과 같습니다.

/usr/local/bin/program-to-output-the-html | /usr/local/bin/wkhtmltopdf --title "$SUBJECT" -q /dev/stdin $OUTPUTFILE

또는 표시되는 명령 전에 이 작업을 수행합니다.

SOURCEFILE=/dev/stdin

그러면 프로그램은 open("/dev/stdin",...)이를 방지하려는 논리적인 의도가 없는 한 그렇게 할 것입니다.

답변3

의견을 보면 임시 파일을 사용하여 이 작업을 수행할 수 있을 것 같습니다. 명명된 파이프를 만들어 보는 것은 어떨까요?

 mknod magritte p

PHP 코드에서 Magritte에 쓰기만 하면 됩니다.

wkhtmltopdf가 실행되어야 합니다.

/usr/local/bin/wkhtmltopdf --title "$SUBJECT" -q magritte $OUTPUTFILE

보다 정확하게 위치를 지정할 수 있습니다.

아직도 추측 중입니다. wkhtmltopdf는 PHP에서 실행됩니까?

그렇다면 백그라운드 프로세스로 실행해야 합니다.PHP 실행 기능

exec는 파이프에 쓰기 전에 호출됩니다.

답변4

그래서 올바른 사용법은프로세스 교체.

wkhtmltopdf --title "$SUBJECT" -q <(command_with_output_stream) $OUTPUTFILE

관련 정보