錆からioctl
に電話します。私はthe nix crateを使用すべきであることを知っていますが、正確にはどうですか?ドキュメントからはっきりしない。nixのioctlの使い方は?
私はこのCを持っている:
int tun_open(char *devname)
{
struct ifreq ifr;
int fd, err;
if ((fd = open("/dev/net/tun", O_RDWR)) == -1) {
perror("open /dev/net/tun");exit(1);
}
memset(&ifr, 0, sizeof(ifr));
ifr.ifr_flags = IFF_TUN;
strncpy(ifr.ifr_name, devname, IFNAMSIZ);
/* ioctl will use if_name as the name of TUN
* interface to open: "tun0", etc. */
if ((err = ioctl(fd, TUNSETIFF, (void *) &ifr)) == -1) {
perror("ioctl TUNSETIFF");close(fd);exit(1);
}
//..........
は、私は同じことがnixのクレートを使用していることをどのように行うのでしょうか? nixのクレートにはTUN*
の定数はなく、ioctl
マクロの使用方法は明確ではありません。
これは[XY問題]のようです(http://meta.stackexchange.com/questions/66377/what-is -the-xy-problem)を私に教えてください。特定のioctlユースケースについて質問するのではなく、 'nix'クレートの使い方を尋ねています。それでも、同様のioctlユースケースがhttp://hermanradtke.com/2016/03/17/unions-rust-ffi.htmlでカバーされているようだと言えるでしょう。 – ArtemGr
@ArtemGr OPは短くてシンプルなCコードのスニペットを提供し、Rustで同等の処理を行う方法を尋ねました。 XY問題はどのくらい正確ですか? – user4815162342