Вилка () на iPhone

Позволяет ли iPhone SDKfork() а такжеpipe()традиционные функции Unix? Я не могу заставить их работать.

редактировать

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

В iPhone нет возможности раскошелиться на процесс. Тем не менее, это не невозможно реализовать трубопровод. В моем проекте я создаю новый поток POSIX (о том, как это сделать, читайте в документации Apple). Дочерний поток разделяет дескриптор файла, созданный pipe (), с родительским потоком. Дочерние и родительские потоки могут общаться через каналы. Например, мой дочерний поток dup2 () fd [1] выдает стандартный вывод. Таким образом, любой стандартный вывод может быть перехвачен в родительском потоке. Аналогично fd [0] и стандартному вводу.

Псевдокод (у меня нет кода, но вы поняли):

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");
}

Стратегия очень удобна, если вы хотите использовать стороннюю библиотеку в своем приложении для iPhone. Однако проблема в том, что стандартная отладка с использованием printf () больше не доступна. В моем проекте я просто направил все выходные данные отладки на стандартную ошибку, XCode отобразил бы результаты на своей консоли.

Ответы на вопрос(1)

Ваш ответ на вопрос