1

ioctl()を使用して、アプリケーションからドライバー関数を呼び出しています。ログを使用することで、カーネルコードが最初に実行されていることがわかりました。例えば、

私のアプリケーションでは

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

私の運転手で

printk( "ドライバーが呼び出されました");

コードを実行すると、最初に「Driver called」が出力され、次に「CallingDriver」が出力されます。これには何か理由がありますか?

4

1 に答える 1

0

デフォルトでは、stdoutストリームはバッファリングされ、データは改行(または実行の終了)の後にのみ表示されます。この場合、表示はioctl通話後に行われます。

fflush呼び出し後にを使用して、強制的に表示することができますprintf

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

詳細については、これらの回答を読むことができます。

于 2012-12-31T09:08:46.980 に答える