我正在编写一个系统调用函数(在FreeBSD中)。您可能知道这样一个函数的返回类型是一个int,它只指示系统调用是否成功,并且通过设置返回调用者请求的值:
td->td_retval[0]= my_requires_value;
其中td的类型为thread *,td_retval [0]为int。
我的问题是我所需的值是char []。我该怎么办呢?我应该在系统调用中如何设置td-> td_retval [0],如何在调用函数中将其检索回来?
我对C及其指针并不是很熟悉,但我觉得这可以通过使用正确的指针和地址来实现。
答案 0 :(得分:2)
如果要返回一个字符串,您的函数应该有一个参数,该参数是指向用户空间中预先分配的缓冲区的指针,该缓冲区将接受字符串(以及另一个具有最大大小的参数)。返回值仅用于报告错误,例如提供的缓冲区太小。
请参阅this示例,它可以帮助您设计系统调用。