上次我在一个项目中询问了信号问题,你的帮助非常有帮助。我只有一个问题卡住了。我想读取一个文件(必须是大文本文件)并计算某些单词的出现次数。好吧,这不再是问题了 但是每当我调用 SIGSTP(ctrl+Z)时,程序应该显示它现在正在读取的行号,这怎么可能。 我知道如何计算整个文本的行数,因此如果我在某个时间调用它,返回的数字将是总行数,或正在读取的行
最佳答案
您可以使用信号系统调用注册特定信号:
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
例如:
void signal_handler(int signal)
{
//display line number
}
signal(SIGSTP, signal_handler);
该信号将中断您当前的代码链,这意味着可以在读取文件期间调用信号处理程序。 如果您使用全局变量来存储您正在读取的行,那么这将返回最新的调用值。
关于c - 如何知道现在正在读取的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21092608/