Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 是否允许sendmsg写入传递给它的缓冲区?_Unix_Language Lawyer_Posix - Fatal编程技术网

Unix 是否允许sendmsg写入传递给它的缓冲区?

Unix 是否允许sendmsg写入传递给它的缓冲区?,unix,language-lawyer,posix,Unix,Language Lawyer,Posix,sendmsg接受一个const struct msghdr*,因此它无法写入struct msghdr本身struct msghdr包含指向struct iovec的非常量指针。理论上,sendmsg可以写入struct iovec以及这些iovec指向的缓冲区 看起来sendmsg从未写入这些数据缓冲区,但这是否在某个地方得到保证 此外,在发送消息期间是否可以写入辅助数据(控制数据)?似乎SCM\u权限和SCM\u凭证在发送消息期间不写入控制数据,但是否有其他辅助消息类型可以这样做 背景是N

sendmsg接受一个
const struct msghdr*
,因此它无法写入
struct msghdr
本身
struct msghdr
包含指向
struct iovec
的非常量指针。理论上,sendmsg可以写入
struct iovec
以及这些iovec指向的缓冲区

看起来sendmsg从未写入这些数据缓冲区,但这是否在某个地方得到保证

此外,在发送消息期间是否可以写入辅助数据(控制数据)?似乎
SCM\u权限
SCM\u凭证
在发送消息期间不写入控制数据,但是否有其他辅助消息类型可以这样做

背景是Nightly Rust对sendmsg有一个安全的抽象。Rust区分可变(非常量)和非可变(常量)数据。目前,它假设sendmsg数据是可变的,但我认为这些缓冲区应该是不可变的