как выполнить запрос и не выводить ничего в консоль?
Как замерять время выполнения функции?
как можно искусно замедлить выполнение
Имеется код вида
int64_t a = b/c
b и c какие-то произвольные числа
требуется записать 0 в переменную a, если произошел SIGFPE.
Проверять значения b и c не вариант, нужно как-то задавать значение для a в обработчике сигнала.
при использовании Valgrind выпадает ошибка:
Опытным путём пришёл к выводу что проблемма связана с ошибкой в самом make.
==6410== Valgrind: "/media/mid/Main_file_m2/Road/rank 0/libftTester/a.out"
Нужно написать программу, которая будет посылать в stdin программы данные и забирать из stdout.
…
Что я делаю не так?
#include <unistd.h>
int main()
{
int fd[2][2];
pipe(fd[0]);
pipe(fd[1]);
pid_t pid_fork = fork();
if (!pid_fork) {
// Дочерний процесс
close(fd[0][1]);
close(fd[1][0]);
dup2(fd[0][0], STDIN_FILENO);
dup2(fd[1][1], STDOUT_FILENO);
execl("/usr/bin/tr", "/usr/bin/tr", "l", "r", NULL);
} else {
// Родительский процесс
close(fd[0][0]);
close(fd[1][1]);
char buf[1000];
ssize_t sz;
write(fd[0][1], "hello, world\n", sizeof("hello, world\n") - 1);
close(fd[0][1]);
sz = read(fd[1][0], buf, sizeof(buf));
if (sz > 0) {
write(STDOUT_FILENO, buf, sz);
}
}
return 0;
}
Почему … GetKeyState() не считывает состояние клавиши?
The key status returned from this function changes as a thread reads key messages from its message queue. The status does not reflect the interrupt-level state associated with the hardware. Use the GetAsyncKeyState function to retrieve that information.
Такие же порты используются при нахождении нажатой клавиши на клавиатуре, так как они могут быть и там и тут?
"Кадр не находится в модуле". Подскажите с чем это может быть связано
HANDLE h = CreateThread( NULL, 0, factorial(gn), NULL, NULL, NULL );
CreateThread(NULL, 0, factorial, NULL, NULL, NULL)
). 3) если ты сделаешь эти два изменения, тебе прийдётся также переделать передачу параметра в функцию factorial и получение результата её работы. во-первых компилятор даёт предупреждение, … , но ошибки не производит. Я спокойно линкую файл недо-драйвера с основным ядром, (конечный результат - .efi),
objdump -t bootx64.so | grep UND
0000000000000000 *UND* 0000000000000000 inportb
Trace 0: 0x7fb15d338e80 [0000000000000000/000000007e6e22de/0x40c2b0]
----------------
IN:
0x7e6e2081: bf 60 00 00 00 movl $0x60, %edi
0x7e6e2086: b8 00 00 00 00 movl $0, %eax
0x7e6e208b: e8 90 57 00 00 callq 0x7e6e7820
Trace 0: 0x7fb15d3390c0 [0000000000000000/000000007e6e2081/0x40c2b0]
----------------
IN:
0x7e6e7820: af scasl (%rdi), %eax
0x7e6e7821: af scasl (%rdi), %eax
0x7e6e7822: af scasl (%rdi), %eax
0x7e6e7823: af scasl (%rdi), %eax
0x7e6e7824: af scasl (%rdi), %eax
0x7e6e7825: af scasl (%rdi), %eax
0x7e6e7826: af scasl (%rdi), %eax
0x7e6e7827: af scasl (%rdi), %eax
0x7e6e7828: af scasl (%rdi), %eax
0x7e6e7829: af scasl (%rdi), %eax
0x7e6e782a: af scasl (%rdi), %eax
0x7e6e782b: af scasl (%rdi), %eax
…
unsigned char
inportb(unsigned short port)
{
unsigned char v;
asm volatile ("in {%1|%b0}, {%b0|%1}\n" : "=a"(v) : "d"(port));
return v;
}
-zdefs
в команду линковки чтобы получать ошибку линковки при наличии ссылок на неопределённые символы.-monitor stdio
). Я нажимаю ESC когда в QEMU запускается tianocore и выбираю Boot Manager -> EFI Internal Shell, а там пишу fs0:efi\boot\bootx64.efi
, после этого в мониторной консоли включаю логгирование (командами logfile log
, log in_asm,exec
), после чего нажимаю enter в консоли EFI. После этого можно смотреть в файл log и искать в нём знакомые байты из objdump. Первая функция работает, а при вызове второй функции - "срабатывание точки останова" при присвоении переменной fp указателя на поток - при вызове функции fopen(). Помогите разобраться с проблемой не понимаю, где ошибка.
gets
читают строчки неограниченной длины в какие-то поля твоей структуры. Определения структуры ты не привёл, но мой магический шар говорит, что gets вполне может вылезти за пределы полей в которые он читает и поломать кучу. Можно попробовать заменить gets(x)
на fgets(x, sizeof(x), stdin)
.