В ударе я могу асинхронно открыть сокеты и использовать их позже?

Вы могли использовать cp скопировать каталоги, подавая окончание шаблона шарика /,

cp -a A/*/ C/

и можно скопировать файлы без -a (подобный -r) опция

cp A/* B/

хотя эта последняя команда дала бы безопасные ошибки на каталогах, не скопированный.

4
16.02.2013, 11:02
1 ответ

Не с /dev/tcp/x/y непосредственно, но Вы могли использовать каналы для общения с процессами, которые запускаются в фоновом режиме, чтобы подключить сокеты TCP и передать данные.

Что-то как

coproc hostA {
  exec {fd}<> /dev/tcp/127.0.0.1/80
  cat <&$fd & cat >&$fd
}

# same for hostB...

echo -e 'HEAD / HTTP/1.0\r\n\r' >&${hostA[1]}
cat <&${hostA[0]}

Поскольку Вы заканчиваете тем, что работали два cat команды так или иначе, Вы могли бы также обойтись без /dev/tcp (который не всегда включается), и использование, например, socat:

coproc hostA { socat - tcp:localhost:80; }

Или, Вы могли удалить зависимость от удара при помощи именованных каналов:

mkfifo hostA.in hostA.out
socat - tcp:localhost:80 < hostA.in > hostA.out &
2
27.01.2020, 21:00
  • 1
    Одна из моих целей с этим проектом не состоит в том, чтобы отвалить внешние / приложения сторонних производителей, таким образом, socat опция не обращается ко мне, но мне действительно нравится, когда Ваше использование coprocs работает вокруг проблемы, которую я видел. Я дам этому выстрел! –  Michael Spiegle 16.02.2013, 01:17

Теги

Похожие вопросы