1

我正在使用 ioctl() 从应用程序调用驱动程序函数。通过使用日志,我发现我的内核代码首先执行。例如,

在我的应用程序中

printf("调用驱动程序"); ioctl();

在我的驱动程序中

printk("驱动调用");

当我执行我的代码时,首先它打印“驱动程序调用”然后“调用驱动程序”我有什么理由吗?

4

1 回答 1

0

默认情况下,stdout流是缓冲的,并且数据仅在换行符之后(或执行结束)显示。在这种情况下,显示是在ioctl调用之后完成的。

您可以在通话fflush后强制使用显示。printf

printf("Calling Driver");
fflush(stdout);
ioctl();

有关更多详细信息,您可以阅读这些答案

于 2012-12-31T09:08:46.980 回答