Описание тега system-calls

Системный вызов используется программами для запроса служб у ядра операционной системы.
1 ответ

Будет ли системный вызов write() блокировать дальнейшую работу до тех пор, пока не будет задействовано read(), или наоборот?

Написано как часть клиент-сервера TCP/IP: Сервер: write(nfds,data1,sizeof(data1)); usleep(1000); write(nfds,data2,sizeof(data2)); Клиент: read(fds,s,sizeof(s)); printf("%s",s); read(fds,s,sizeof(s)); printf("%s",s); Без usleep(1000) между двумя вызо…
27 окт '16 в 15:11
2 ответа

Почему это работает, если размер буфера меньше, чем nbyte?

Коды такие: #define BUFSIZ 5 #include <stdio.h> #include <sys/syscall.h> main() { char buf[BUFSIZ]; int n; n = read(0, buf, 10); printf("%d",n); printf("%s",buf); return 0; } Я вводabcdefg тогда и вывод: 8abcdefg в read(0, buf, 10);, 10 …
15 ноя '13 в 08:02
2 ответа

Возвращаемое значение размера или типа системного вызова в Linux

Я понимаю, что при взгляде на код ядра тип возвращаемого значения системного вызова linux равен long int, а его размер 32-bit, Можно ли заставить системный вызов linux вернуть 64-bit значение (типа, скажем, long long int)? Я понимаю, что менять разм…
07 июн '13 в 22:00
3 ответа

Pipe() системный вызов

Я изучаю трубопровод и оболочку в классе систем. Я возиться с strace, Я запускаю его на какой-то программе под названием dpipe, в strace журнал, я вижу следующее: pipe([3, 4]) pipe([5, 6]) Что представляют собой эти целые числа? Я в соответствии с э…
21 фев '12 в 02:42
0 ответов

Использование wget в C++ - плохая практика? (Linux)

В настоящее время я работаю над программой для Linux, которая загружает данные с веб-сервера. Я достиг этого с system("wget <url etc...>") и это, кажется, работает хорошо, поскольку это только делает работу. Однако я прочитал, что призвание wg…
03 апр '16 в 20:05
0 ответов

c - O_TRUNC и O_APPEND для системного вызова open()

Биты режима доступа O_TRUNC а также O_APPEND для системного вызова open()2-й параметр. Я думаю, что их не следует использовать вместе, потому что они конфликтуют, или я думаю, что я переопределю другой. Но я увидел следующее в <The linux programm…
16 мар '15 в 11:01
0 ответов

Почему я получаю EACCES после вызова привязки сокетов в NASM linux x64

Мой код ниже. Я могу получить fd=3 в sys_socket, но не могу пройти через sys_bind из-за errno=EACCES. Я не знаю почему, так как я проверил регистры и данные памяти в my_sa. Не могли бы вы дать мне несколько советов? Большое спасибо. global _start st…
12 сен '15 в 16:24
1 ответ

Обработчик системных вызовов C ссылается на функции с различными типами возвращаемых значений и количеством аргументов

Мой обработчик системного вызова получает индекс, сопоставленный с функцией, и должен вызывать эту функцию, извлекая ее аргументы из стека. Как я могу абстрагировать тип функции и количество аргументов?
06 мар '14 в 01:04
1 ответ

getpwnam() завершает работу программы при вводе неверного пользователя

В getuserinfo() если строка struct passwd *theUser = getpwnam(имя пользователя); выполняется с именем пользователя, которого не существует, программа просто закрывается с ошибкой -1. Он никогда не попадает в часть обработки ошибок функции. Это не во…
08 ноя '15 в 01:45
0 ответов

Все ли вызовы sync() блокируют все вызовы write()/read()/fwrite()/...?

Мое приложение является многопоточным (pthread) приложением c/ C++. По некоторым причинам я должен позвонить sync() от unistd.h (вызов синхронизации будет блокироваться до нескольких секунд) Другой поток выполняет некоторые операции с файловой систе…
29 июн '18 в 09:49
1 ответ

Стратегия системного вызова Linux через страницу vsyscall

Я читаю об управлении виртуальными машинами в Linux. По-видимому, для выполнения системного вызова есть страница 0xFFFFF000 на x86. называется vsyscall page. В прошлом стратегия вызова системного вызова заключалась в использовании int 0x80. Эта стра…
21 май '14 в 14:14
2 ответа

Таблица 64-битных системных вызовов macOS

Я могу найти 64-битную таблицу системных вызовов Linux, но номера вызовов не работают в macOS - я получаю Bus Error: 10 всякий раз, когда я пытаюсь использовать их. Каковы номера вызовов macOS для таких операций, как sys_write?
17 фев '18 в 20:34
1 ответ

Нужно ли закрывать очередь сообщений systemv?

Я использую систему v Очередь сообщений. Очередь создается и удаляется другим процессом. Итак, в этом примере я использую уже созданную очередь сообщений: #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> ... key = f…
23 май '18 в 09:45
2 ответа

Системные вызовы, которые управляют каталогами

Чтобы реализовать некоторые меры безопасности в ядре User-mode-Linux, я пытаюсь отредактировать системные вызовы, такие как opendir и readdir, которые будут управлять каталогами, чтобы я мог гарантировать определенный каталог, к которому нет доступа…
05 май '13 в 17:17
1 ответ

Реализация системных вызовов в Pintos

Я хочу реализовать уже определенные системные вызовы в PintOS ( halt(), create()... и т. Д., Определенные в pintos/src/lib/user/syscall.c). Текущий обработчик системного вызова в pintos/src/userprog/syscall.c ничего не делает. Как мне сделать процес…
27 авг '12 в 19:02
5 ответов

Отключение vsyscalls в Linux

Я работаю над программным обеспечением, которое отслеживает системные вызовы других процессов с помощью ptrace(2). К сожалению, большинство современных операционных систем реализуют какие-то быстрые системные вызовы в пользовательском режиме, которы…
26 ноя '11 в 16:55
2 ответа

Невозможно скопировать весь файл в другой с помощью системного вызова write

Я должен скопировать содержимое файла file1 в буфер (размером 23 байта), а затем скопировать данные из буфера в файл file2. У меня есть проблемы, чтобы убедиться, что file1 полностью скопирован в буфер. Когда буфер копируется в файл file2, файл file…
28 сен '13 в 05:54
1 ответ

Windows API Hook C++

Я учусь писать хуки для Windows API и для упражнения пишу хуки для функции pDeleteFileA. Когда функция будет вызвана, перед удалением файла я хочу проверить, является ли имя файла 'testfile.txt', если да, то вместо того, чтобы удалить его, появится …
16 апр '16 в 12:22
2 ответа

Случайные целые числа, поступающие из системного вызова "запись", не распознаются из системного вызова "чтение" в C

Я пытаюсь записать фиксированное количество случайных целых чисел в файл, используя системный вызов "запись", а затем проверить, правильно ли они записаны. Чтобы сделать это, я вызываю функцию "чтение", затем я читаю все содержимое файла, целое числ…
10 апр '14 в 00:48
0 ответов

Вызов execvp из драйвера Linux

В настоящее время я хочу вызвать execvp со стороны ядра. Моя программа запрограммирована на переход в режим остановки. Итак, я попытался настроить ниже код: char *argv[] = { "/sbin/halt", "-f", NULL }; char * envp[] = { "SHELL=/bin/sh", "HOME=/", "P…
03 янв '18 в 08:56