iPhone SDK允許fork()
和pipe()
這個傳統的unix函數嗎?我似乎無法讓他們工作。iPhone上的Fork()
編輯
問題解決了。在這裏,我爲遇到類似於我的問題的任何人提供解決方案。我受到了這個主題中答案的啓發。
在iPhone中,沒有辦法分叉一個進程。但是,實現管道並非不可能。在我的項目中,我創建了一個新的POSIX線程(請閱讀Apple的文檔以瞭解如何執行此操作)。子線程將與父線程共享由pipe()創建的文件描述符。子線程和父線程可以通過管道進行通信。例如,我的子線程dup2()fd [1]到它的標準輸出。所以任何標準輸出都可以在父線程中捕獲。類似於fd [0]和標準輸入。
僞代碼(我沒有代碼可用,但你的想法):如果你想你的iPhone應用程序中使用第三方庫
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");
}
的策略是非常方便的。但是,問題在於使用printf()的標準調試不再可用。在我的項目中,我只是將所有調試輸出指向標準錯誤,XCode會將輸出顯示到其控制檯。
你說得對。我試圖使用fork(),因爲這是UNIX中的標準做法。另外,如果我們在不同的進程中使用printf(),它不會影響子進程。 iPhone不允許這樣做,所以我決定切換到多個線程。 – SmallChess 2010-09-21 05:06:06