Взлом терминальных сообщений - PullRequest
4 голосов
/ 27 февраля 2012

Это странный вопрос, но я хочу знать, как изменить сообщение, поступающее на терминал. Например,

vikram@vikram-Studio-XPS-1645:~$ cat seg.c 
#include<stdio.h>
void main()
{
    int* p=9;
    printf("%x",*p);
}
vikram@vikram-Studio-XPS-1645:~$ ./a.out 
Segmentation fault

Я хочу изменить сообщение «Ошибка сегментации» на что-то другое, например «Ошибка указателя».

За этим нет особой цели, я просто хочу изучить возможности открытого исходного кода.

Я пытаюсь выполнить поиск в исходном коде ядра Linux -

vikram@vikram-Studio-XPS-1645:~$ cd linux-3.0.1/
vikram@vikram-Studio-XPS-1645:~/linux-3.0.1$ grep -r "Segmentation fault" *
Documentation/s390/Debugging390.txt:Program terminated with signal 11, Segmentation fault.
Documentation/virtual/uml/UserModeLinux-HOWTO.txt:  Program received signal SIGSEGV, Segmentation fault.
vikram@vikram-Studio-XPS-1645:~/linux-3.0.1$ 

Когда придет массаж, он должен быть где-то в моей системе.

Я думаю, я ищу не в том месте. Заранее спасибо.

1 Ответ

2 голосов
/ 27 февраля 2012

Как прокомментировал Мэт, сообщение приходит из вашей оболочки.

Поскольку ваша оболочка, вероятно, является свободным программным обеспечением (вероятно, bash , но вы также можете использовать некоторые другие, мне нравится zsh ), вам может потребоваться время, чтобы исправить ее соответствующим образом.

Но я считаю, что вы не должны этого делать, потому что иначе вы не сможете объяснить, что делает ваша система. Например, если ваша модифицированная оболочка выдает «Pointer failure», никто не поймет вопрос, который упоминает это.

Кажется, намного проще изучать обычные вещи в Linux ...

...