Архив рубрики: 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() – для добавления или изменения.