我有现有的 C++ 代码,它使用 fork() 系统调用创建一个子进程。子进程使用 execlp() 系统调用执行 linux 命令。现在我想使用 100% 代码覆盖率的 gmock 框架来测试这段代码。我用谷歌搜索了很多,但我没有得到任何完整的证明解决方案。有人可以帮我吗?
这是我的 SUT:
int someclass :: os_fork()
{
pid_t pid = fork();
if (pid == -1) {
cout<<"fork() failed with errno" <<errno <<endl;
return false;
}
if (pid == 0 && (execlp("ls", "ls", nullptr) != 0))
{
cout<<"child process failed with errno"<<errno<<endl;
return false;
}
int ppid = pid;
return 0;
}
我想模拟 fork() 和 execlp() 系统调用。我怎么能那样做?