Domanda

Ho un'applicazione che funziona con prese e legge / scrive i dati. Utilizza Fondazione quadro in combinazione con CFNetwork e stdio .

Questa è la questione - quando viene lanciato da console (shell bash) funziona al 100% benissimo e non c'è niente di sbagliato con. Tuttavia, quando viene richiamato da un'altra applicazione tramite NSTask follia inizia. L'intera applicazione impazzisce e si legge solo la presa una volta e poi riaggancia (si intende per uscire dopo che è stato fatto).

Questa applicazione non si basa su variabili ambientali o altre cose del genere. Non è un problema di utente sia. Quando viene lanciato invia una richiesta semplice per il server e ' printf ' la risposta e legge di nuovo. Questo accade pacchetto di terminazione di un fino è ricevuto.

Sono molto confuso, e ci si sente come se ci fosse qualcosa dentro il quadro che fa la folle applicazione solo per pisciare il programmatore off.

A proposito, io sono su Mac OS X Snow Leopard e l'applicazione è per la stessa piattaforma.

EDIT 1: Trasferimento di stdout per un NSPipe provoca. Ma perché?

È stato utile?

Soluzione

libc tratta un tubo / file e una console collegata a una (pseudo) terminale diverso. In particolare, il criterio predefinito buffer è diverso. Vedere l'ampia discussione in questo Stack Overflow Q & A .

Quindi, è perfettamente concepibile che un programma che funziona quando collegato ad una (pseudo) terminale non funziona con un tubo. Se avete bisogno di consigli più specifici, è necessario posta (almeno lo scheletro di) il vostro codice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top