想通过程序读取/proc/sys/net/ipv4/ip_forward的值,代码如下
#include <linux/unistd.h>
#include <linux/types.h>
#include <linux/sysctl.h>
_syscall1(int, _sysctl, struct __sysctl_args *, args);
int sysctl(int *name, int nlen, void *oldval, size_t *oldlenp,
void *newval, size_t newlen)
{
struct __sysctl_args args={name,nlen,oldval,oldlenp,newval,newlen};
return _sysctl(&args);
}
#define SIZE(x) sizeof(x)/sizeof(x[0])
#define OSNAMESZ 100
main()
{
int osname;
size_t len;
int name[] = {CTL_NET, NET_IPV4, NET_IPV4_FORWARD};
len = sizeof(osname);
if (sysctl(name, SIZE(name),&osname, &len, 0, 0))
perror("sysctl");
else
printf("This machine is running %d
", osname);
return 0;
}
程序运行提示:Invalid Argument
请各位高手帮忙!
|
|