- 论坛徽章:
- 0
|
偶在LINUX下
最近用到需要用到描述字传递 所以就用到了UNIXDOMAIN协议
为了安全起见同时做一个验证 这时就本着能抄就抄的懒蛋原则按照UNP V1 14.8节抄啦 然后编译发现用不了
比如内里是fucred 而在LINUX中是ucred 结构也不大一样
kernel中的scm_send和scm_recv好象就是用来传送描述字和这个东西的
8过弄了半天总是不行 总是收到的controllen是0,后来发现了一个套接字选项(跟UNP中介绍的不同)SO_PASSCRED 将其打开,8过虽然controllen的长度变成了24 可是其中的每位取出来都是0
最后另找到了一个套接字选项
{
struct ucred caller;
socklen_t optlen = sizeof (caller);
if (getsockopt (con, SOL_SOCKET, SO_PEERCRED, &caller, &optlen) < 0) {
perror("getsockopt" ;
exit(errno); }
printf("cool:%d\n",caller.pid);
}
比书中介绍的方式容易很多 不过我还是想知道如何使用书中介绍的类似的方法来取得
谁如果有相关的经验,来介绍一下 多谢了 |
|