Приложение ведет себя по-разному, когда вывод перенаправляется на объект NSPIPE?

StackOverflow https://stackoverflow.com/questions/3587755

Вопрос

У меня есть приложение, которое работает с розетками и читает / пишет данные. Оно использует фундамент Рамки в сочетании с Cfnetwork. а также stdio..

Вот проблема - когда она запущена с консоли (Bash Shell) работает 100% штраф, и нет ничего плохого. Однако, когда он вызывается другим приложением, начнется безумие NStask. Вся приложение идет безумно, и он только считывает сокет один раз, а затем зависает вверх (он предназначен для выхода после его выполнения).

Это приложение не полагается на экологические переменные или любые другие подобные вещи. Это не проблема пользователя. Когда он запущен, он отправляет простой запрос на сервер и «Printf.ответ и снова читается. Это происходит до получения полученного пакета завершения.

Я действительно запутался, и в рамках кажется, что есть что-то, что делает приложение безумным, чтобы просить программист.

Кстати, я нахожусь Mac OS X Snow Leopard И приложение для той же платформы.

Редактировать 1: Перенаправление stdout. чтобы Невысокий вызывает это. Но почему ?

Это было полезно?

Решение

libc Относится к трубе / файлу и консоли, подключенную к (псевдо) клемме по-разному. В частности, политика буферизации по умолчанию отличается. Увидеть обширное обсуждение В этом стеке переполняет Q & A.

Итак, совершенно возможно, что программа, которая работает при подключении к (псевдо) терминалу, не будет работать с трубой. Если вам нужен более конкретный совет, вам нужно опубликовать (хотя бы скелет) вашего кода.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top