Вы можете указать socat
на связь с программой awk
; это заставляет awk
работать в режиме линейной буферизации, и вы получаете немедленные ответы, которые ищете.
Вот командная строка для прослушивания на порту 9000:
socat TCP4-LISTEN:9000 SYSTEM:'/tmp/awk.sh',pty,echo=0
А вот содержимое скрипта /tmp/awk.sh
:
#!/usr/bin/awk -f
#
BEGIN { print "This is the awk socket" }
{ print NR, $0 }
END { print "All done" }
Пример выполнения:
$ nc -vvv otherhost 9000
otherhost [192.168.1.15] 9000 (?) open
This is the awk socket
hello world
1 hello world
how are you
2 how are you
boo
3 boo
^C sent 28, rcvd 61
У аргумента клиента есть некоторые правила синтаксического анализа, которые вы можете найти на страницах руководства для startx
и xinit
.
Обычно клиент должен начинаться с косой черты или точки. Это работает:
$ startx /usr/bin/python apk.py
Или обычный чит для использования пути из env:
$ startx /usr/bin/env python apk.py
Если программа может запускаться сама по себе (правильная строка #! При запуске в случае python), вы можете просто
$ startx ./apk.py