Вопросы по теме '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 просмотров
schedule
18.09.2022
перехват системного вызова 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