我正在尝试使用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做同样的事情,所以我可以很容易地调试它。
谢谢!
答案 0 :(得分:0)
您对fork()
和后续if
的来电有问题。来自fork()
的返回值在失败时为-1,否则父返回值是新分叉子节点的PID,子进程返回结果为0.
这个测试:
if (fork()){ ...
如果fork
失败(非归零),将成功。