gpt4 book ai didi

c - 如何检查我的包装函数系统调用 - read() 是否正确?

转载 作者:太空狗 更新时间:2023-10-29 11:22:54 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Inline Assembler for wrapper function doesn’t work for some reason

我被要求为 read , write , close , open & fork 编写包装函数。

我已经为 read、write、close、open 编写了 4 个包装函数。

我的问题是:

  1. 如何使用我为 read、write、close 和 open 编写的 4 个包装函数为 fork 编写包装函数?

  2. 如何检查我编写的包装器是否正确?这是 read 的包装函数的代码 - 称为 my_read :

ssize_t my_read(int fd, void *buf, size_t count)   
{
ssize_t res;

__asm__ volatile(
"int $0x80" /* make the request to the OS */
: "=a" (res), /* return result in eax ("a") */
"+b" (fd), /* pass arg1 in ebx ("b") */
"+c" (buf), /* pass arg2 in ecx ("c") */
"+d" (count) /* pass arg3 in edx ("d") */
: "a" (5) /* passing the system call for read to %eax , with call number 5 */
: "memory", "cc");

/* The operating system will return a negative value on error;
* wrappers return -1 on error and set the errno global variable */

if (-125 <= res && res < 0)
{
errno = -res;
res = -1;
}

return res;
}

备注 : 我不允许直接使用open ,close ,read , write & fork 命令。

如果需要,我可以附上其他 3 个包装器的其余代码。以上是read 的封装。

问候

罗恩

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com