如何使用fork()同时在Xcode中运行两个主要函数

时间:2014-08-07 01:35:49

标签: c++ xcode unix compilation fork

我正在尝试使用fork()在两个单独的进程中运行两个不同的主函数。每个主要功能都在.cpp文件中。第一个文件名为client.cpp,我在做分叉,这里有一个简短的代码:

     File: client.cpp

int main(int argc, char * argv[]) {

    //some code...

if (fork()) {
         if (execv("./server", NULL) != 0){
             cerr << " Failed to lunch the server" << endl;;
         }
     }
     else{

        //continue executing client.cpp 

另一个文件是server.cpp,它必须在另一个进程上运行才能运行client.cpp,否则client.cpp会暂停直到它看到server.cpp运行。

整个程序非常简单,客户端以字符串形式发送一些请求,然后服务器回复那些请求。 server.cpp中的main函数必须在client.cpp

中的main函数之前触发

我通常使用makefile编译所有文件,然后打开两个单独的终端窗口并在一个窗口中运行./client,在另一个窗口中运行./server,它会正常工作。但是,我只是不知道如何使用Xcode做同样的事情,所以我可以很容易地调试它。

谢谢!

1 个答案:

答案 0 :(得分:0)

您对fork()和后续if的来电有问题。来自fork()的返回值在失败时为-1,否则父返回值是新分叉子节点的PID,子进程返回结果为0.

这个测试:

if (fork()){ ...
如果fork失败(非归零),

成功