У меня есть сомнения.
Я открыл ядро и изменил каталог 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).
Во время перезагрузки на экране появилось много «Тестирование» .
Так что до сих пор все в порядке.
Но теперь у меня проблема.
Я создал эту программу в c.
int main()
{
size_t filedesc = open("testefile2.txt",O_CREAT | O_WRONLY,0640);
printf("%d",filedesc);
}
Я скомпилировал эту программу, выполнил и работает хорошо.
Но я не понимаю, почему «Тестирование» не появилось на оболочке.
Я имею в виду, что, когда я перезагружаю компьютер, появляется много слова «Тестирование», почему это слово не появляется, когда я выполняю программу выше.
Просто чтобы добавить, я включаю эти библиотеки в этот код выше:
unistd.h
, fcntl.h
, stdio.h
, stdlib.h
Спасибо, ребята.