socat / ghostscript questions

James B. Byrne byrnejb at
Tue Apr 20 15:51:26 UTC 2021

I am trying to produce pdf files using socat and ghostscript.  I have this
command for socat:

socat TCP4-LISTEN:9100,bind=,fork,reuseaddr SYSTEM:'gs -dQUIET
-dNOPROMPT -dBATCH -sDEVICE=pdfwrite -sOutputFile=/tmp/\"$(date
-Iseconds)\".pdf -'

Which I try to send a text file to using cat and nc:

cat sshpipe3.txt | nc 9100

What happens is that the cat/nc pipe hangs.  This is probably an artifact of
how nc works but I need to check that is so.  When I terminate nc with <ctrl>-c
the socat gs instance reports an error:

GPL Ghostscript 9.52: Unrecoverable error, exit code 1
2021/04/20 11:32:51 socat[67296] E write(6, 0x800adf000, 128): Broken pipe

This produces an empty file named like /tmp/2021-04-20T11:13:20-04:00.pdf.

I am no doubt missing the obvious here so I have a few naive questions:

1. Is it possible to terminate the sending process without causing GS to issue
an error?

2. Would printing from another host to that socat instance result in the same
broken pipe error?

3. Why are the files that gs creates empty?

4. How do I send a text file to the socat instance so that it is converted to a
pdf document?

***          e-Mail is NOT a SECURE channel          ***
        Do NOT transmit sensitive data via e-Mail
   Unencrypted messages have no legal claim to privacy
 Do NOT open attachments nor follow links sent by e-Mail

James B. Byrne                mailto:ByrneJB at
Harte & Lyne Limited
9 Brockley Drive              vox: +1 905 561 1241
Hamilton, Ontario             fax: +1 905 561 0757
Canada  L8E 3C3

More information about the freebsd-questions mailing list