在使用gdb运行Linux进程时调用函数?

在使用gdb运行Linux进程时调用函数?,linux,gdb,Linux,Gdb,我有一个正在运行的Linux进程,它在poll()上卡住了。它在缓冲区中有一些数据,但该缓冲区尚未写入磁盘。通常我会终止进程,这会导致它刷新缓冲区并退出 但是,在本例中,它写入的文件已从文件系统中删除,因此我需要在缓冲区退出之前写入缓冲区,而inode仍然可以通过/proc//fd访问/ 是否可以将进程从poll()调用中“踢出”,然后单步执行,直到它使用GDB将缓冲区刷新到磁盘 (出于好奇,源代码在这里:)如果程序关闭句柄后文件将完全消失,那么写入已删除的文件有什么用?您试图保存的数据是在内存

我有一个正在运行的Linux进程,它在poll()上卡住了。它在缓冲区中有一些数据,但该缓冲区尚未写入磁盘。通常我会终止进程,这会导致它刷新缓冲区并退出

但是,在本例中,它写入的文件已从文件系统中删除,因此我需要在缓冲区退出之前写入缓冲区,而inode仍然可以通过/proc//fd访问/

是否可以将进程从poll()调用中“踢出”,然后单步执行,直到它使用GDB将缓冲区刷新到磁盘


(出于好奇,源代码在这里:)

如果程序关闭句柄后文件将完全消失,那么写入已删除的文件有什么用?您试图保存的数据是在内存缓冲区中还是在已删除的文件中?由于进程仍在运行,因此/proc文件系统中存在对已删除文件的引用。因此,如果我设法让进程写入数据,我可以在进程结束之前将其复制出来(文件确实丢失)。信号往往会唤醒系统调用中的进程,因此下一个问题是,如何唤醒它,但确保它不会退出?您可能仍然会中断库函数(
fclose()
是一个很好的候选人。)