Ядро Linux: printk из «открытого» системного вызова не работает

У меня есть сомнения.

Я открыл ядро ​​и изменил каталог 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 (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

Спасибо, ребята.

6
задан Vinit 22 November 2011 в 20:02
поделиться