मैं जंग से ioctl
पर कॉल करना चाहता हूं। मुझे पता है कि मुझे the nix crate का उपयोग करना चाहिए, लेकिन वास्तव में कैसे? दस्तावेज़ीकरण से यह स्पष्ट नहीं है।निक्स के ioctl का उपयोग कैसे करें?
मैं इस सी है:
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 टोकरा का उपयोग कर एक ही बात करना होगा कैसे? निक्स क्रेट में TUN*
स्थिरांक नहीं हैं और यह स्पष्ट नहीं है कि ioctl
मैक्रो का उपयोग कैसे करें।
यह एक [XY समस्या] की तरह लगता है (http://meta.stackexchange.com/questions/66377/what-is -the-xy-problem) मेरे लिए: विशिष्ट ioctl उपयोग केस के बारे में पूछने के बजाय आप पूछ रहे हैं कि 'nix' crate का उपयोग कैसे करें। फिर भी, यह उल्लेखनीय है कि एक समान ioctl उपयोग केस http://hermanradtke.com/2016/03/17/unions-rust-ffi.html पर कवर किया गया प्रतीत होता है। – ArtemGr
@ArtemGr ओपी ने सी कोड का एक छोटा और सरल स्निपेट प्रदान किया और पूछा कि जंग में बराबर कैसे करें। एक एक्सवाई समस्या वास्तव में कितनी है? – user4815162342