我的app中用C++实现了一个函数,这个函数使用fork创建一个进程执行新的功能。然后在app中调用这个函数,在这个函数中有一个字符数组,在给字符数组赋值时,指针越界,导致fork的进程崩溃,但是用logcat看不到fork进程崩溃信息,fork部分代码如下:
pid = fork();
if(pid == 0) { //child
int ret = -1;
close(pipe_fd[0]);
ret = pCase->runCaseBlock(pBlockName);
write(pipe_fd[1], &ret, sizeof(int));
close(pipe_fd[1]);
_exit(0);
} else { //parent
int exitCode;
close(pipe_fd[1]);
read(pipe_fd[0], &ret, sizeof(int)); //read test result from pipe
close(pipe_fd[0]);
if (waitpid(pid, &exitCode, 0) != pid) {
ret = WJ_RET_ERROR_WAITPID;
} else {
if (WIFEXITED(exitCode)) {
if (ret == -1) { //Haven't got result from pipe
ret = WEXITSTATUS(exitCode);
}
} else {
if (WIFSIGNALED(exitCode)) {
ret = WJ_RET_ERROR_PROCESS_CRASH;
LOGE(TAG, "*******使得进程终止的信号编号: %d"+WTERMSIG(exitCode));
} else {
ret = WJ_RET_ERROR_UNKNOW;
}
}
}
|