Вопросы и ответы - c

Вопросы и ответы - c



Есть ответ!
В настоящее время я изучаю, как память управляется malloc и свободна, и я не понимаю, почему, когда я хочу malloc 1 байт, malloc выделит 32 байта для блока? Для меня он должен выделить 16 байт для метаданных (размер предыдущего и следующего фрагментов) и 1 байт для данных... #include <stdio.h> #include <stdlib.h> #include <unistd.h> /** ...
Есть ответ!
Я недавно начал изучать язык Си, поэтому я не очень много знаю о функциях С. Недавно я видел программу, написанную на языке Си в Интернете. Это было примерно так:- #include <stdlib.h> #include <stdio.h> #include <unistd.h> int main(int argc, char *argv[]) { int i = 0; int j = 0; char ch; ch = getopt(argc, argv, "n:"); if(ch == 'n') { j = atoi(o...
Есть ответ!
Во время моего процесса изучения языка Си я решил создать структуру, которая дает мне размер рыбы, которую я предоставляю в нем, мой вопрос заключается в том, почему, когда я пишу этот небольшой кусок кода: #include <stdio.h> #include <string.h> struct fish { char catfish[9]; //reserve memory for 9 chars char goldfish[10]; //reserve memory for 10 chars cha...
Есть ответ!
Каково поведение по умолчанию при openфайла в режиме доступа O_WRONLYили O_RDWR. Файл открыт в режиме добавления или усечения? Из мужских страниц: Флаги аргументов должны включать один из следующих режимов доступа: O_RDONLY, O_WRONLY или O_RDWR. ... Кроме того, ноль или более флагов создания файлов и флагов состояния файлов могут быть побитовыми или в виде флагов. Это звучит так, как б...
Есть ответ!
Пытаюсь понять, как отслеживать ошибки в программе. -> я пытаюсь создать дочерний процесс и, если, требуемая комманда имеется в заданной директории - попытаться ее выполнить. Проблемы: 1) Я туплю и не понимаю, как с помощью stat определить, могу ли я использовать эту программу, даже если она там есть. (То есть, mode_t st_mode, понятно, но как понять, что именно оно сообщает/или где об ...
Есть ответ!
Вопрос следующий: в man-е Solaris написано, что захват файлов наследуется при exec, однако, когда я захватываю файл на запись, а затем вызываю execlp(...) — открываю файл в редакторе. Затем я создаю новую сессию и запускаю ту же программу, по идее процесс должен остановиться в ожидании из-за флага F_SETLKW в fcntl(), но он также открывает редактор... В чем может быть дело? #include <sys/types...
Есть ответ!
Посыл каждого модуля Валгринд понятен, за исключением Кэшгринд. Как я понял из мауналов Модуль используется Для сбора информации о статистике попадания в кэши процессора данных и инструкций программы. Для сбора статистики работы модуля предсказания ветвления в программах. Возникли вопросы Я понимаю что кэши проца нужны для того чтобы он как то автоматически оптимизировался и делал некоторые...
Есть ответ!
Программа, которая выдает размер директории. Выдает ошибку в строчке exit (1). " 'exit' was not declared in this scope". В чем может быть ошибка? #include <stdio.h> #include <dirent.h> #include <sys/stat.h> main() { DIR *d; struct dirent *de; struct stat buf; int exists; int total_size; d = opendir("."); if (d == NULL) { perror("prsize"); exit(1); // **ОШ...
Есть ответ!
Делаю сетевую консольную игрушку для курсача, если подключатся через 127.0.0.1 или через локальный ip то все работает, но когда пытаюсь связать клиент сервер через ip инета(типа 84.242.206.234) то клиент не подключается, чяднт? Сервер: int sock, n, port = def_port; int; struct sockaddr_in servaddr; sock = socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr))...
Есть ответ!
Допустим, есть программа, которая вызвала write(). Затем ушла в вечный цикл без вызова close() или fsync()/sync(). В каком случае произойдет реальная запись данных на диск? Файловая система без барьеров, паралельные процессы sync() не вызывают.
Есть ответ!
Я пытаюсь отобразить свой userID и groupID через одну из моих функций в моей программе C. Идентификатор пользователя отображается правильно (501), но мои группы не является. Когда я захожу в группы с помощью команды "ИД-г" я получаю 20, но когда я запускаю его через мою программу, используя функцию, я получаю значение 1. Это мой код. int Registerpw(char **args){ register struct passwd *pw;...
Есть ответ!
Здравствуйте, пишу чатик, начал с параллельного эхо-сервера. Теперь пытаюсь сделать так, чтобы сообщения от одного подключенного клиента рассылались всем подключенным клиентам. В процессе-родителе создаю сокет в файловом пространстве, и делаю его широковещательным: int commfd; struct sockaddr commaddr; if( ( commfd = socket( AF_UNIX, SOCK_DGRAM, 0 ) ) < 0 ) perror( "error in common s...
Есть ответ!
Начал читать книгу Стивенса Unix. Разработка сетевых приложений. Написал свои банальные сервер и клиент. Сервер создает сокет, и ждет пока к нему подключится клиент. Клиент после подключения пишет сообщение, а сервер его на экран выводит. Но суть вот в чем: если не поднимать сервер, то клиент все равно подключается куда то и отсылает сообщение сервер: http://pastebin.com/3WRWJaMT клиент: http://pa...
Есть ответ!
Сейчас мне доступны только RHEL и xubuntu (debian) и внятно сформулировать вопрос в гугле не удалось. Интересует поведение системных (м.б. libc в завоисимости о ОС) вызовов int fd = open(FIFOFILE, O_RDWR | O_CLOEXEC); if (flock(fd, LOCK_EX | LOCK_NB) if (errno == EWOULDBLOCK) fatal("another reader detected"); else fatal("flock"); для разных ОС. В линуксе все предсказуемо блокируется ...
Есть ответ!
В примерах кода вижу использование разных структур при инициализации сокетов: sockaddr_in и sockaddr_un. В описании функции bind указано, что The only purpose of this structure is to cast the structure pointer passed in addr in order to avoid compiler warnings. Есть ли реальное различие?
Есть ответ!
Сталкивался ли кто, чтобы при запуске программы под Valgrind, сообщения типа "Possible data race" указывали на функции блокирования/разблокирования мьютексов? В мане вроде ясно сказано, что Valgrind прекрасно работает с Posix-потоками, но функции pthread_mutex_lock/unlock ему явно не нравятся, или я что-то упускаю? Possible data race during write of size 4 at 0x64BC34 by thread #1 ==11521== Lock...
Есть ответ!
Всем добрый день! Уважаемые спецы, не могли бы вы уточнить для меня понятие промежуточной буфферизации в сети, а так же как она сказывается на количестве байт, считываемых из сокета. Возможна ли ситуация, когда клиент системным вызовом write() записывает в сокет, к примеру, 1024 байта, а вызов read() на сервере при чтении этого сокета так же ожидает 1024 байта, однако read() возвращает данные пор...
Есть ответ!
Всем добрый день! В процессе написания и отладки tcp-сервера столкнулась с несколько непонятным поведением программы : сервер не хотел работать после перезапуска. Нашла информацию, что рекомендуется во всех tcp-серверах перед вызовом функции bind() устанавливать параметр SO_REUSEADDR, так как возможны случаи, когда дочерние процессы продолжают висеть на обслуживании соединения, в то время как серв...
Есть ответ!
Столкнулся с задачей: есть какая-то дата, нужно посчитать разницу в секундах между этой датой и текущим временем системы. Т.е мне надо узнать число секунд с начала эпохи до текущего момента, потом до нужной мне даты и вычесть одно из другого. Проблема в том, что нужно еще учитывать переход на зимнее/летнее время. Пример: На машине /etc/localtime ссылается на /usr/share/zoneinfo/Europe/Bucharest,...
Есть ответ!
Имеется в виду их использование в обработчике сигналов. Я знаю, что в списке безопасных функций из man signal для Linux RedHat их нет. И все таки, какие есть мнения о возможности их вызывать, допустим обработчик не прерываем, тогда можно? Или можно, только для определенных участков прерываемого кода? Обновление Собственно сомнения в безопасности этих функций состоят в следующем: vsnprintf () ...


Закрыть X