当前位置: 技术问答>linux和unix
三个关于linux下C++开发的问题
来源: 互联网 发布时间:2015-11-12
本文导语: 第一: 在一个进程正在运行的时候,想看看这个进程所有的线程,以及每个线程的call stack。有什么办法吗? 第二: linux中sem_wait(), semop()这种操作经常会被signal interrupted。请问,我们在实际开发的时候,什么时...
第一:
在一个进程正在运行的时候,想看看这个进程所有的线程,以及每个线程的call stack。有什么办法吗?
第二:
linux中sem_wait(), semop()这种操作经常会被signal interrupted。请问,我们在实际开发的时候,什么时候需要知道一个wait()操作被信号中断了?我觉得我根本不希望看到它被某个信号中断了,而是看上去和没有收到过信号一样。(类似于pthread_mutex_wait)。
第三:
linux下有什么内存泄漏检测工具吗?或者还有其他资源泄漏的检查工具吗?例如句柄、信号量等等。
谢谢。
在一个进程正在运行的时候,想看看这个进程所有的线程,以及每个线程的call stack。有什么办法吗?
第二:
linux中sem_wait(), semop()这种操作经常会被signal interrupted。请问,我们在实际开发的时候,什么时候需要知道一个wait()操作被信号中断了?我觉得我根本不希望看到它被某个信号中断了,而是看上去和没有收到过信号一样。(类似于pthread_mutex_wait)。
第三:
linux下有什么内存泄漏检测工具吗?或者还有其他资源泄漏的检查工具吗?例如句柄、信号量等等。
谢谢。
|
1、用strace
2、wait返回-1时检查errno,如果是EINTR,则是被信号中断。信号可以用siginterrupt来控制是否中断当前系统调用。
3、用valgrind
2、wait返回-1时检查errno,如果是EINTR,则是被信号中断。信号可以用siginterrupt来控制是否中断当前系统调用。
3、用valgrind