Forquilha () no iPhone
O SDK do iPhone permitefork()
epipe()
, as funções tradicionais do unix? Não consigo fazê-los funcionar.
Editar
Problema resolvido. Aqui, ofereço uma solução para quem encontra problemas semelhantes a mim. Eu fui inspirado pelas respostas neste tópico.
No iPhone, não há como bifurcar um processo. No entanto, não é impossível implementar tubulações. No meu projeto, crio um novo thread POSIX (leia a documentação da Apple para saber como fazer isso). O encadeamento filho compartilharia um descritor de arquivo criado por pipe () com o encadeamento pai. Threads filho e pai podem se comunicar por meio de pipes. Por exemplo, meu thread filho dup2 () fd [1] para sua saída padrão. Portanto, qualquer saída padrão pode ser capturada no encadeamento pai. Semelhante a fd [0] e entrada padrão.
Pseudocódigo (não tenho o código disponível, mas você entendeu):
int fd[2];
pipe(fd);
create_posix_thread(&myThread, fd);
char buffer[1024];
read(fd[0], buffer, 1024);
printf("%s", buffer); // == "Hello World"
void myThread(int fd[])
{
dup2(fd[1], STANDARD_OUTPUT);
printf("Hello World");
}
A estratégia é muito útil se você deseja usar uma biblioteca de terceiros no aplicativo do iPhone. No entanto, um problema é que a depuração padrão usando printf () não está mais disponível. No meu projeto, simplesmente direcionei todas as saídas de depuração para o erro padrão, o XCode exibia as saídas para seu console.