Можно также сделать a:
g/pattern/#
, который распечатает шаблон, который Вы хотите и количество строки.
В операционной системе уже есть защита от ошибочных программ. Мы говорим, что C «опасен» просто потому, что он имеет необработанные указатели и массивы.
Эти вещи делают C и C ++ в некотором роде близкими к оборудованию, быстрыми и эффективными с точки зрения памяти, но они позволяют программе на C работать забить что-то случайное в своей собственной памяти. Его собственная память, а не какая-либо другая программа. Это не повреждает память, это просто меняет то, что делает одна программа на C ... обычно она прерывается.
Вы не можете случайно повредить что-либо, если не выполните что-то такое же опасное, если ввести его в командной строке, скажем, «rm -rf» передается в system (3)
изнутри вашей программы.
Но вы можете создать опасную команду ОС на любом языке. Собственно, это '
Вы можете разбить свой компьютер в отчаянии, но в остальном, я думаю, с вами все будет в порядке. :)
если вы действительно беспокоитесь, Virtualize! Я сомневаюсь, что вы случайно что-то испортите ОБУЧЕНИЕ C ++, но если это вас успокоит, запустите виртуальный компьютер и делайте всю свою работу на нем.
Несколько лет назад на моем 386-м я учился писать кодирование низкоуровневой видеокарты на C и, должно быть, напортачил, потому что вместо записи в конкретный регистр VGA я ударил по звуковой карте и Мой компьютер издавал самый неземной крик. Совершенно напугал меня! Это было по-прежнему безопасно, но я извлек ценный урок - власть дает ответственность.
По природе использования такого языка, как C или C ++, вы, естественно, хотите взаимодействовать с вашим ПК / рабочей станцией / ОС на более низком уровне, поэтому примите последствия.
Вот почему многие современные ОС имеют доступ на уровне «супервизор» и «пользователь». Если вы ДЕЙСТВИТЕЛЬНО хотите испортить свой компьютер, поиграйте с DDK
== Edit == Только что вспомнил еще один. Несколько лет назад я работал с нестандартным оборудованием и получил одну из первых плат-прототипов. Я тестировал новый звуковой чип, поэтому набрал какой-то быстрый код и отправил его, затем я услышал мощный хлопок и наблюдал, как будто в замедленной съемке, как конденсатор взорвался и отправил его содержимое прямо мне в глаз. К счастью, он просто промахнулся мимо моей головы на несколько дюймов. Кто сказал, что программирование на C не вредно для вашего здоровья!
Если у вас есть разумные разрешения, установленные в вашей OS X, вам не нужно беспокоиться о случайном удалении.
Однако, как только вы перейдете с уровня пользователя на уровень ядра, он становится возможным даже испортить ваше оборудование.
Чтобы подробнее рассказать о возможных опасностях разработки на уровне ядра:
Перезапись секторов жесткого диска.
Повреждение памяти в других процессах, вызывающее непредвиденное поведение.
Управление оборудованием. с неожиданными последствиями. (Это может привести к перегреву, поломке плохо спроектированного оборудования или переписыванию микропрограммы с тарабарщиной.)
Эти проблемы можно устранить, запустив виртуальную машину.
Нет, это не проблема. C и C ++, как и все другие языки программирования, имеют дело с тем, что происходит в вашей программе на CPU. Конечно, вы можете сделать системный вызов, который форматирует ваш жесткий диск, но «форматирование жесткого диска» не является частью языка C ++. Обычный код с ошибками просто дает сбой (или, если вам не повезло, не дает сбоев и ведет себя странно)
В этом отношении он не более опасен, чем Java, Python или любой другой язык. Все они позволяют выполнять системные вызовы, которые могут вызвать проблемы. Но пока вы остаетесь «внутри» языка, играя с конструкциями, определенными языком (функциями, классами, указателями, циклами и т. Д.), Худшее, что может случиться, - это то, что вы испортите свою собственную программу.
Честно говоря, я думаю, вы ответили на свой вопрос, когда сказали, что неплохо проверить / понять код, который вы запускаете из Интернета. Если вы купите себе респектабельную книгу вроде Язык программирования C , шансы на то, что вы допустите ошибку, достаточно серьезную, чтобы полностью разрушить ваш компьютер, ничтожны. Вам действительно нужно знать, что вы делаете, чтобы написать код, разрушающий вашу систему. Вы намного с большей вероятностью случайно rm -rf / при запуске от имени root или установке какой-то плохой библиотеки, которая влияет на стабильность системы.
Кстати, я настоятельно рекомендую изучить C перед изучением C ++. В противном случае вы потратите свое время на изучение C, не имея возможности понять концепции объектно-ориентированного программирования.
Если вы не вошли в систему как root, вы не сможете нанести большой вред своей машине.
Пока вы не выполняете прямые системные вызовы, что, вероятно, имеет место, если вы только изучаете C, вы не нанесете никакого реального ущерба. Если вы просто пишете ванильный C и придерживаетесь стандартной библиотеки, худшее, что вы можете сделать, - это удалить один файл, но для этого вам придется сознательно вызвать функцию.
Позвольте мне сформулировать это так: если бы вашу систему было легко разрушить во время изучения C, я бы вывел из строя по крайней мере дюжину в первый год, когда я ее изучал.
Единственная проблема заключается в том, чтобы заставить демонов заткнуть тебе нос, когда они выйдут.