0

我正在编写一个系统调用函数(在 FreeBSD 中)。您可能知道此类函数的返回类型是 int,它仅指示系统调用是否成功,调用者请求的值通过设置返回:

td->td_retval[0]= my_requires_value;

其中 td 是 thread* 类型,而 td_retval[0] 是 int。

我的问题是我需要的值是一个char []。我该如何管理?我应该在系统调用中设置什么 td->td_retval[0] 以及如何在调用函数中检索它?

我对 C 及其指针不是很熟悉,但我觉得这可以通过使用正确的指针和地址来完成。

4

1 回答 1

2

如果你想返回一个字符串,你的函数应该有一个参数,它是一个指向用户空间中预分配缓冲区的指针,它将接收字符串(以及另一个具有最大大小的参数)。返回值仅用于报告错误,例如提供的缓冲区太小。

这个例子,它可以帮助你设计你的系统调用。

于 2013-03-17T15:46:39.283 回答