【问题标题】:Why Driver code is executing first?为什么驱动程序代码首先执行?
【发布时间】:2012-12-31 08:46:15
【问题描述】:

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

在我的应用程序中

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

在我的驱动程序中

printk("驱动调用");

当我执行我的代码时,首先打印“Driver called”,然后是“Calling Driver” 我有什么理由吗?

【问题讨论】:

    标签: linux-device-driver


    【解决方案1】:

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

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

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

    更多详情可以阅读these answers

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-19
      • 1970-01-01
      • 2018-01-02
      • 2017-11-07
      • 2017-10-22
      • 2021-08-30
      • 1970-01-01
      相关资源
      最近更新 更多