gpt4 book ai didi

c - c中的指针类型

转载 作者:太空宇宙 更新时间:2023-11-04 10:43:26 24 4
gpt4 key购买 nike

我正在尝试将 int[] 的地址传递给系统调用。然而,消息只有字符指针字段。

我已经尝试将 int 指针转换为 char 指针并再次转换回来,但数组中的结果不正确。

int pidarray[j];
m.m1_p3 = (char*)pidarray;

我还尝试将数组的地址存储为整数,并通过消息整数字段传递它。

int pidarray[j];
m.m1_i3 = &pidarray;

编辑:

这将是我创建的系统调用,旨在用 pid 填充数组并将数据复制回进程,因此我需要传递数组的地址。我称系统调用为so,

_syscall(PM_PROC_NR, GETCHILDPIDS, &m);

它填充一个数组并尝试将其复制回调用进程拥有的内存空间。这是这样做的:

sys_vircopy(SELF, (vir_bytes) &test, who_e,(vir_bytes) m_in.m1_i3, sizeof(test));

其中 test 是一个 int[]。

如何以这种格式发送 int[] 的地址?

最佳答案

在 C 语言中,数组会退化为指针,尤其是作为参数传递时。

所以只需将其作为指针处理即可。您可能需要更改新系统调用的接口(interface)(例如,可能给它一个指针和一个大小,或者约定 pidarray 应该以 0 终止)。

顺便说一句,听起来你的系统调用毫无用处。您可以通过现有的 syscalls(2) 在用户空间的 Linux 上执行所有这些操作使用 /proc/(参见 proc(5) ...)。

关于c - c中的指针类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34066823/

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