Articles of Linux

Какие часто используются функции сетевого программирования / fragmentы кода?

Все из нас, кто все еще выполняет какое-то сетевое программирование (TCP / UDP, DNS или клиент / сервер) в C, повторно используют некоторые fragmentы кода снова и снова. Мы используем некоторые стандартные библиотеки, но затем мы также часто записываем код, который отсутствует в одной библиотеке. Существует ли набор таких fragmentов кода, которые используются очень часто. […]

где найти исходный код select () в источнике glibc?

Я пытаюсь найти исходный код select () (linux, i386 arch) в исходном коде glibc, но я ничего не могу найти (относящийся к указанной архитектуре) Может ли кто-нибудь указать мне на исходный код select ()?

Как ПРАВИЛЬНО установить библиотеку gsl в Linux?

У меня возникла проблема при установке GNU Scientific Library (gsl). Я поместил пакет на свой рабочий стол и сделал «./configure», «make» и «sudo make install» в соответствии с документом. Я проверил каталог / usr / local / include, там есть вновь созданная папка «gsl». Но когда я попытался использовать функции, предоставляемые библиотекой, произошла ошибка «неопределенной […]

Как отключить копирование на запись и нуль, заполненный по требованию для mmap ()

Я реализую команду cp (file copy) с помощью mmap (). Для этого я сопоставил исходный файл в режиме MAP_PRIVATE (как я хочу читать) и в целевом файле в режиме MAP_SHARED (так как мне нужно записать обратно измененный контент файла назначения). Выполняя это, я наблюдал снижение производительности из-за большого количества мелких ошибок страницы, которые возникают из-за […]

vfork никогда не заканчивается

Следующий код никогда не заканчивается. Это почему? #include #include #include #define SIZE 5 int nums[SIZE] = {0, 1, 2, 3, 4}; int main() { int i; pid_t pid; pid = vfork(); if(pid == 0){ /* Child process */ for(i = 0; i 0){ /* Parent process */ wait(NULL); for(i = 0; i < SIZE; i++) […]

Разница между функцией setuid и seteuid

Программа 1: Пример с setuid () #include #include #include void main() { printf(“Real user id = %d, Effective User id = %d\n”,getuid(),geteuid()); setuid(1000); printf(“Real user id = %d, Effective User id = %d\n”,getuid(),geteuid()); setuid(1014); printf(“Real user id = %d, Effective User id = %d\n”,getuid(),geteuid()); } Выход: guest $ ./a.out Real user id = 1000, Effective […]

Является ли законным передавать вектор аргумента нулевой программы в execve ()?

Рассмотрим следующий код C (x86_64) #include int main() { execve(“/bin/ls”, 0, 0); } Я скомпилирован как gcc ac и выполнен; Я получил SIGABRT с ошибкой A NULL argv[0] was passed through an exec system call. Aborted Затем, работая на gdb, сначала я получил SIGABRT , однако я сделал второй запуск, и он сработал! Starting program: […]

странное сообщение об ошибке в сборке GCC

int main() { __asm__(“movl $0x1,%%eax; movl $0x0,%%ebx; int $0x80; “:::”eax”,”ebx”); } Я пытаюсь моделировать поведение exit () в Linux. Но в современной Linux я считаю, что это очень сложно сделать, поскольку некоторые обработчики выходов будут вызваны после выхода (). Поэтому я пишу старую версию exit (). Возможно, 10 лет назад вы можете найти его в […]

Найти количество блокировок задач на семафоре POSIX

Есть ли способ узнать количество процессов или streamов, ожидающих определенного семафора? Как API для проверки значения. Sem_getvalue () возвращает только 0, а не отрицательное число, абсолютное значение которого представляет собой количество задач, блокирующих семафор, как указано на нескольких сайтах. Любая помощь будет большой. Заранее спасибо!!

Как работает copy-on-write в fork-exec?

Процесс fork sa child process и вызывает exec() в дочернем процессе. С помощью copy-on-write после fork родительский процесс и дочерний процесс делят память. Когда дочерний процесс вызывает exec() для загрузки другого процесса, будет ли Linux копировать родительскую память в новую память, а ребенок загружает другой процесс также в эту новую память? Если это так, значит […]

Intereting Posts