版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32768743/article/details/87122779
CValuesRef这个东西,是因为在用read函数中出现的
public fun read(__fd: kotlin.Int, __buf: kotlinx.cinterop.CValuesRef<*>?, __nbytes: platform.posix.size_t /* = kotlin.ULong */): platform.posix.ssize_t /* = kotlin.Long */ { /* compiled code */ }
不知道第2个参数填什么
找到官方文档,(⊙o⊙)…,没读懂什么
然后想到,是不是哪个demo中有用,于是找到
recv函数是需要用CValuesRef
的,第二个参数就是
依葫芦画瓢
最后这个样子可以用了
package csapp
import kotlinx.cinterop.*
import platform.posix.*
fun main() {
val fd1 = open("foobar.txt", O_RDONLY, 0)
val fd2 = open("foobar.txt", O_RDONLY, 0)
val buffer = ByteArray(1024)
buffer.usePinned { pinned ->
read(fd1, pinned.addressOf(0), 1)
read(fd2, pinned.addressOf(0), 1)
println("c = ${buffer[0].toChar()}")
}
exit(0)
}
这里又多了usePinned
, addressOf
两个方法
这个后面慢慢再弄吧
CValuesRef
怎么构造一个替代品让read函数可以使用的任务完成了