Вопросы по теме 'system-calls'

Как определить, где код проводит много времени в пространстве ядра (системные вызовы)
Я заметил, что 10% моего запуска кода занимает системное пространство. Однако я НЕ знаю, какие системные вызовы. Однако я подозреваю, что это либо файлы, либо временные метки. Есть ли инструмент, чтобы выяснить, какие системные вызовы являются...
667 просмотров
schedule 26.10.2022

короткое чтение из файловой системы, когда это может произойти?
Очевидно, что в общем случае системный вызов read(2) может вернуть меньше байтов, чем было запрошено для чтения. Однако довольно много программ предполагают, что при работе с локальными файлами read(2) никогда не возвращает меньше, чем было запрошено...
4256 просмотров
schedule 25.10.2022

Какая кодировка используется при вызове fopen или open?
Когда мы вызываем системный вызов в Linux, например « open », или функцию stdio, например « fopen », мы должны предоставить « const char * filename ». Мой вопрос в том, какая кодировка используется здесь? Это utf-8 или ascii или iso8859-x? Зависит...
5736 просмотров
schedule 28.07.2022

Альтернативы использованию stat() для получения типа файла?
Существуют ли какие-либо альтернативы stat (который есть в большинстве систем Unix), которые могут определить тип файла? В справочной странице говорится, что вызов stat стоит дорого, и мне нужно довольно часто вызывать его в своем приложении.
3992 просмотров
schedule 08.05.2022

Системные вызовы C open/read/write/close и O_CREAT|O_EXCL
Учитывая следующий код (предполагается записать «helloworld» в файл «helloworld», а затем прочитать текст): #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> #define FNAME "helloworld" int main(){ int...
20026 просмотров
schedule 16.04.2022

Как повторно реализовать (или обернуть) функцию системного вызова в Linux?
Предположим, я хочу полностью взять на себя системный вызов open(), возможно, чтобы обернуть фактический системный вызов и выполнить некоторую регистрацию. Один из способов это использование LD_PRELOAD для загрузки (созданной пользователем) общей...
16926 просмотров
schedule 30.04.2022

Использование системных вызовов для реализации команды unix cat
Для моего класса ОС у меня есть задание реализовать команду Unix cat с системными вызовами (без scanf или printf). Вот что я получил до сих пор: (Отредактировано благодаря ответам) #include <sys/types.h> #include <unistd.h>...
21156 просмотров
schedule 28.08.2022

Мой системный вызов не работает должным образом
Мне нужно создать 2 новых системных вызова для установки и получения свойства из процесса по заданному pid. Я изменил task_struct, добавил int z_value (это то, что мне нужно установить/получить) Мне также удалось установить значение z_value по...
1539 просмотров
schedule 28.07.2023

При запуске системного вызова, как сохраняются пользовательские режимы ss и esp, например. в линуксе?
Я знаю, что пользовательский режим ss/esp должен быть сохранен в стеке режима ядра для последующего восстановления. Вопрос в том, что для обнаружения стека режима ядра сначала нужно загрузить ss/esp с соответствующими значениями режима ядра....
778 просмотров
schedule 23.04.2023

Загрузка необработанного кода из программы C
Я пишу программу, которая загружает и выполняет код из файла. Но у меня возникла проблема: системный вызов «запись» не работает. Код успешно загружается и выполняется, но не отображает текст на экране. Программа, загружающая код: #include...
1633 просмотров
schedule 23.10.2023

c и LD_PRELOAD. вызовы open и open64 перехвачены, но не stat64
Я сделал небольшую общую библиотеку, которая пытается перехватывать системные вызовы open, open64, stat и stat64. Когда я экспортирую LD_PRELOAD и запускаю Oracle sqlplus, я вижу следы вызовов open и open64, но не вижу следов вызовов stat и stat64....
3309 просмотров
schedule 16.01.2023

Почему многие системные вызовы (getpid) перехватываются только один раз с помощью strace?
Я много раз вызывал getpid() в программе (для проверки эффективности системных вызовов), однако, когда я использую strace для получения трассировки, только один getpid() звонок перехвачен. Код прост: #include <unistd.h> #include...
2906 просмотров
schedule 02.03.2023

Странное поведение от созданного системного вызова
Я создаю файл следующим образом int fd = creat(file_path.c_str() ,S_IRWXU|S_IRWXG|S_IRWXO); Хотя я предоставляю все разрешения всем трем объектам, он создает файлы с указанным ниже разрешением. -rwxr-xr-x Каталог, в котором я...
137 просмотров
schedule 05.01.2023

обработка межпроцессного сигнала в Ruby
Я запускаю этот скрипт: t = fork do Signal.trap "INT" do puts "child" exit end sleep 10 end Signal.trap "INT" do puts "parent" Process.kill "INT", t Process.waitpid t exit end Process.waitpid t Когда я нажимаю...
1541 просмотров
schedule 15.02.2023

Добавление системного вызова с аргументами в ядро ​​FreeBSD
Я хочу добавить системный вызов с помощью KLD в FreeBSD 8.2, который имеет некоторые аргументы (здесь 1 аргумент). Я сделал следующее (фактически я изменил файл syscall.c в /usr/share/examples/kld/syscalls/ модуль/syscall.c) #include...
1529 просмотров
schedule 17.09.2023

sys_readlink не работает EFAULT — альтернатива
У меня есть дескриптор файла, и я хотел бы получить реальный путь. В настоящее время я вызываю sys_readlink /proc/self/fd/<fd> , что иногда работает, но часто я получаю сообщение об ошибке -14 (-EFAULT). Вот код: fs = get_fs();...
623 просмотров
schedule 18.04.2022

Большие различия между системными вызовами Linux и программными прерываниями INT 80
Из не столь отдаленной картины того, что происходит, может ли кто-нибудь объяснить больше о том, в чем разница между системными вызовами Linux, такими как read() и write() и т. д., и записью их на ассемблере с использованием кода операции x86 INT...
1559 просмотров
schedule 16.05.2022

Как разобрать системный вызов
Если у меня есть виртуальный адрес системного вызова, могу ли я разобрать этот системный вызов? Я хочу сделать это при работающем ядре, чтобы узнать, какие все адреса обрабатываются конкретным системным вызовом во время работы. Я использую...
833 просмотров

перехват системного вызова openat() для GNU tar
Я пытаюсь перехватить системный вызов openat() в Linux, используя пользовательскую общую библиотеку, которую я могу загрузить через LD_PRELOAD . Пример intercept-openat.c имеет следующее содержание: #define _GNU_SOURCE #include...
2908 просмотров
schedule 27.12.2022

Как поймать системный вызов в JAVA?
Я хочу поймать исключение (или что-то еще), когда моя программа будет уничтожена командой kill из операционной системы. Я хочу напечатать сообщение в файл журнала перед закрытием. Есть ли способ сделать это? Спасибо
314 просмотров
schedule 27.05.2022