Есть ли способ вызвать ioctl (вопрос также действителен для всех вызовов sys) с помощью команд SIOCGIFFLAGS
и SIOCSIFFLAGS
атомарным способом? Например, если я добавлю флаг IFF_PROMISC
в интерфейс:
...
struct ifreq ifr;
memset(&ifr, 0, sizeof(ifr));
strcpy(ifr.ifr_name, "eth0");
if (ioctl(sk, SIOCGIFFLAGS, &ifr) < 0)
...
ifr.ifr_flags |= IFF_PROMISC;
if (ioctl(sk, SIOCSIFFLAGS, &ifr) < 0)
...
как я могу убедиться, что эти два вызова сделаны атомарно?
Спасибо всем!