私は疑問を持っています。
カーネルを開き、ディレクトリlinux-3.1.1 / fs/open.cを変更しました
open.cのフォローコードを変更しました。
SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, int, mode)
{
long ret;
printk(KERN_EMERG "Testing\n");
...
}
私はこの行だけを置きます:printk(KERN_EMERG "Testing");
そして私はライブラリを含めます:<linux/kernel.h>
そして<linux/printk.h>
そこで、Linux(Ubuntu)をコンパイルして再起動しました。再起動中に、画面に多くの「テスト」が表示されました。だから今まではOKです。
しかし今、私は問題を抱えています。このプログラムはcで作成しました。
int main()
{
size_t filedesc = open("testefile2.txt",O_CREAT | O_WRONLY,0640);
printf("%d",filedesc);
}
私はこのプログラムをコンパイルして実行し、うまく機能しました。しかし、なぜ「テスト」がシェルに表示されなかったのかわかりません。つまり、PCを再起動したときに「テスト中」という単語がたくさん表示された場合、上記のプログラムを実行したときにこの単語が表示されないのはなぜですか。追加するだけで、上記のコードにこのライブラリを含めます。
unistd.h
、、、、fcntl.h
_ stdio.h
_stdlib.h
君たちありがとう。