Dzień dobry
Piszę program pod Linuxa. Jak z poziomu programu linuxowego postawić interfejs etho, polecenie ifconfig eth0 up. Jak to zrobić w C++ ?
Dzień dobry
Piszę program pod Linuxa. Jak z poziomu programu linuxowego postawić interfejs etho, polecenie ifconfig eth0 up. Jak to zrobić w C++ ?
Próbowałeś za pomocą funkcji system?
https://github.com/atomic-penguin/linux/blob/master/Documentation/networking/ifenslave.c
http://stackoverflow.com/questions/5858655/linux-programmatically-up-down-an-interface-kernel
To są dobre sposoby. Jeżeliby nie zadziałało:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#define NO_IFCONFIG 5
#define FORK_ERROR -1
int ifconfig_up(char *ifname) {
int statval;
pid_t pid = fork();
if(pid == 0) {
char *args[] = {"ifconfig",ifname,"up", NULL};
execvp(args[0],args);
exit(NO_IFCONFIG);
}
else if(pid > 0) {
waitpid(pid,&statval,0);
return WEXITSTATUS(statval);
}
return FORK_ERROR;
}
int main(void) {
int excode = ifconfig_up("eth0");
switch(excode) {
case EXIT_SUCCESS:
printf("Wlaczono pomyslnie\n");
break;
case NO_IFCONFIG:
fprintf(stderr,"nie masz ifconfiga\n");
break;
default:
fprintf(stderr,"inny blad %d\n",excode);
break;
}
return 0;
}