c中的指针类型

时间:2015-12-03 13:03:29

标签: c linux pointers

我试图将int []的地址传递给系统调用。但是,消息只有char指针的字段。

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

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

此外,我尝试将数组的地址存储为整数,并将其传递给消息整数字段。

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

编辑:

这将是我创建的系统调用,旨在用pids填充数组并将数据复制回进程,因此我需要传递数组的地址。我打电话给系统调用,

_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 []的地址?

1 个答案:

答案 0 :(得分:1)

在C中,数组被衰减为指针,特别是作为参数传递时。

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

顺便说一句,它闻起来像你的系统调用没用。您可以使用/proc/通过现有syscalls(2)在用户土地上的Linux上执行所有操作(请参阅proc(5) ...)。