unix 下,发送原始数据报的权限问题
需求:要在程序中实现 ping 的功能,判断远程主机通不通。
有两个办法:
1、 sys 系统调用,使用 unix 自带的ping工具,分析重定向的结果,判断远程主机通不通
缺点:各种 os 自带的 ping 返回值差别大,变化多,不利于维护
2、自己在程序里写一个 ping 函数
麻烦来了:创建原始套接字(socket_row),需要 root 权限,但不可能为了这个程序,让机器在 root 下裸奔。
俺于是想了个办法:在创建套接字之前,把权限改为 root ,创建成功之后在改为普通用户。
只是这个想法可行吗?可行的话,该怎么行?