Архив рубрики: C/C++

C is a general-purpose, imperative computer programming language, supporting structured programming, lexical variable scope and recursion, while a static type system prevents many unintended operations.

C: создание и применение shared library в Linux

31 июля 2017
 

 Библиотека — это файл, содержащий скопилированный код из нескольких объектных файлов в один файл библиотеки, который может содержать функции используемые другими программами. Библиотеки могут быть статичными (static) и динамическими или разделяемыми (dynamic, shared). Ниже — краткий пример создания и применения shared library на C в Linux. Доступ к общей библиотеке может осуществляться по нескольким именам:… Читать далее »

C: libssh — пример SSH-«клиента»

26 мая 2017
 

 Ниже рассматривается пример написания SSH-клиента на C с использованием libssh. Сама библиотека libssh уже устарела, и вместо неё рекомендуется libssh2. Сравнение libssh и libssh2 есть тут>>>. Тем не менее у libssh отличные примеры (которые и используются в примерах ниже с небольшими отличаями) и документация, поэтому использую её. RFC 4251 в SSH Protocol Architecture описывает три основных… Читать далее »

C: сокеты и пример модели client-server

16 мая 2017
 

 Перевод с дополнениями. Оригинал — тут>>>. Как правило — два процесса общаются друг с другом с помощью одного из Inter Process Communication (IPC) механизма ядра, таких как: pipe очереди сообщений (Message queues) общая память (shared memory) Кроме перечисленных IPC — в ядре присутствует много других возможностей, но что если процессам необходимо обмениваться данными по сети?… Читать далее »

C: указатели — подробный разбор

22 мая 2016
 

 Перевод с небольшими дополнениями, уточнениями и примерами. Оригинал в посте C Pointers Explained, Really. >>><<< Когда я учился в колледже — мой друг пожаловался, что ему сложно понять синтаксис и использование указателей при программировании на С. Для примера он привёл код вида «*x=**p++«, говоря что он уродливый и сложный для чтения, в нём слишком много операторов, наложенных друг… Читать далее »

Linux: strace — отслеживаем выполнение процесса

17 февраля 2016
 

 strace — утилита для Linux, которая позволяет отследить выполнение системных вызовов (system call) и сигналов к ядру системы. Для примера возьмем простую программу на С, которая выводит содержимое указанного файла: #include <stdio.h> #include <stdlib.h> int main() { char ch, file_name[25]; FILE *fp; printf(«Enter the name of file you wish to see\n»); gets(file_name); fp = fopen(file_name,»r»);… Читать далее »

C: Declare vs Define в C и C++

8 февраля 2016
 

 Объявление (declaration) и определение (definition) в C и C++ имеют небольшое, но очень важное различие. Если не понимать его — то вас ожидают странные ошибки линкера (LD в GCC — /usr/bin/ld), вроде «undefined symbol foo«, «undefined reference to ‘foo’» или даже «undefined reference to vtable for foo» (в C++). Что такое Объявление в C и C++ Когда вы объявляете переменную, функцию… Читать далее »

C: enum — перечисление

13 апреля 2015
 

 Перечисление — тип данных, задаваемый пользователем, состоящий из целочисленных констант и связанных с ними имён. Для определения перечисления используется ключевое слово enum. Синтаксис определения enum: enum type_name{value1, value2, …, valueN }; Например: enum count {one, two, three, four, five }; Тут count — имя переменной типа enum, а one, two и т.д. — имена значений.

C: переменные argc и argv

23 января 2015
 

 Для работы с аргументами — в C используются две специальные переменные — argc и argv. argc — argument count, или «счётчик аргументов»; argv — argument vector, или «вектор аргументов». Использовать их очень просто.

C: чтение, добавление, изменение и удаление переменных окружения (getvar, setvar, unsetenv)

22 января 2015
 

 Для работы с переменными используются функции getvar() и setvar() из библиотеки stdlib.h. Как понятно из названий — функция getvar() используется для получения значения переменной, а setvar() — для добавления или изменения.