尝试调试我没有返回bash提示符的程序,我使用了strace
并给了它PID。该程序是一个二进制文件,我没有源代码。根据{{1}},有一个strace
。但是,我不知道哪个文件存在问题。
正如您在-1 EBADF (Bad file descriptor)
退出时所见,因此正在运行strace
没有结果。
lsof -p <PID>
如何搜索丢失/错误的文件?
答案 0 :(得分:4)
你要关闭两次相同的文件描述符:
close(5) = 0
close(5) = -1 EBADF (Bad file descriptor)
答案 1 :(得分:3)
EBADF
。因此,根据定义, 没有文件存在问题。
答案 2 :(得分:1)
如果您的程序是多线程的,多次关闭文件描述符是一个非常糟糕的主意,因为在您第一次关闭它之后,另一个线程可以调用open()并给予相同的文件描述符(但是引用到另一个文件);此时在线程中第二次调用close将关闭另一个线程的文件。总是使用类似的东西:
关闭(X); x = -1;
确保您不会无意中关闭重复使用的描述符。