Следующий процесс приводит к другому поведению в Mac OS и Ubutu:
cat some_text_file | xargs a_shell_script.sh
a_shell_script.sh
#!/bin/bash
echo "$@" | telnet 127.0.0.1 123
exit 0
Сервер TCP, слушающий на порте 123, задан сценарием для обработки содержания some_text_file. На моей реализации Ubuntu этого процесса длина входа, который получает сервер TCP, является длиной some_text_file. На моей реализации OSX однако - это - меньшая часть длины, т.е. вход становится усеченным так или иначе.
Примечание: Это не проблема xargs насколько я могу сказать. Количество args ($#
) доступный a_shell_script.sh
равно по обеим реализациям.
Спасибо!
Не зная достаточно о реализации, я могу только предположить, что Ваш процесс на конце слушания не циклично выполняется к recv(2)
от сокета, но только читает однажды. То, что Вы получаете все сразу на Ubuntu и Вы не делаете на OS X, вероятно, имеет отношение к реализации стека TCP в этих двух системах, но это не что-то, что должно иметь значение; вместо этого, код принимающего конца должен опросить сокет и считать данные как доступные.
Проверьте socket(2)
и recv(2)
вызовы, и возможно отправляют некоторый код, если Вы думаете, что он помог бы.