我开发了一个简单的测试程序(派生一个子进程和子日志调试消息,对父进程也是如此)。 该程序使用AUTOSAR dlt记录调试消息。
将以上程序编译为目标构建环境(例如目标1)并执行后,该程序将挂起/无响应。 在调试问题时,似乎fork()系统调用被阻止(未返回)。 我无法理解出了什么问题,下面是strack跟踪
mprotect(0xffffb15b7000, 4096, PROT_READ) = 0
munmap(0xffffb27cc000, 17638) = 0
getpid() = 27338
tgkill(27338, 27339, SIGRTMIN) = 0
getpid() = 27338
tgkill(27338, 27340, SIGRTMIN) = 0
futex(0xffffb25ba2c0, FUTEX_WAIT, 27339, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set) < -- next call should be clone(), but not called
似乎没有从Linux内核调用clone()来生成子进程。 有人可以指导我吗?
但是当相同的示例程序与共享库(autosar dlt)取消链接时,子进程将被派生并成功完成。
同一示例程序以及链接的共享dlt库是在不同的目标环境上执行的,该程序已按预期执行和完成。