1
我使用ioctl()從應用程序調用驅動程序函數。通過使用日誌,我發現我的內核代碼正在執行。例如,爲什麼驅動代碼首先執行?
在我的應用程序
printf(「Calling Driver」); ioctl();
在我的驅動程序中
printk(「Driver called」);
當我執行我的代碼時,首先打印「驅動程序調用」,然後「調用驅動程序」 我有任何理由嗎?
我使用ioctl()從應用程序調用驅動程序函數。通過使用日誌,我發現我的內核代碼正在執行。例如,爲什麼驅動代碼首先執行?
在我的應用程序
printf(「Calling Driver」); ioctl();
在我的驅動程序中
printk(「Driver called」);
當我執行我的代碼時,首先打印「驅動程序調用」,然後「調用驅動程序」 我有任何理由嗎?
默認情況下,stdout
流被緩衝,數據僅在換行符(或執行結束)後顯示。在這種情況下,顯示在ioctl
呼叫之後完成。
您可以在printf
調用後使用fflush
強制顯示。
printf("Calling Driver");
fflush(stdout);
ioctl();
欲瞭解更多詳情,你可以閱讀these answers。