gpt4 book ai didi

c - 跟踪 C 阻塞系统调用

转载 作者:IT王子 更新时间:2023-10-29 00:51:59 27 4
gpt4 key购买 nike

我正在尝试跟踪阻止某个进程的高级函数调用。 scanf 就是这样的一个例子,它会阻塞终端,直到它收到一个 '\n' 。现在我跟踪 scanf 到 getc(scanf 使用 getc 从 stdin 获取字符)。我的问题是,解释来自键盘的数据,一直通过内核并返回 getc 的过程是什么?另外 scanf 如何停止终端(计算机是空闲的,还是正在处理另一项任务)?谢谢你

最佳答案

每当进程发出系统调用(例如阻塞read(2))时,进程开始以内核模式执行,即处理特定系统调用的内核代码是调用。

之后,根据底层设备和驱动程序,进程可以挂起并放入等待队列。当按下一个键时,将调用处理中断的内核代码,并从那里推断出按下了哪个键。

内核然后恢复正在等待此输入​​的进程,并通过将数据从内核地址空间复制到特定进程的地址空间来传送数据。

关于c - 跟踪 C 阻塞系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9127940/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com