当前位置:  技术问答>linux和unix

关于_sysctl,man给出的example我编译不了。

    来源: 互联网  发布时间:2016-01-23

    本文导语:  大家看看,我的系统是FC6 #include  #include  #include  _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,oldlen...

大家看看,我的系统是FC6
#include 
#include 
#include 

_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
char osname[OSNAMESZ];
int osnamelth;
int name[] = { CTL_KERN, KERN_OSTYPE };
main()
{
osnamelth = sizeof(osname);
if (sysctl(name, SIZE(name), osname, &osnamelth, 0, 0))
perror("sysctl");
else
printf("This machine is running %*sn", osnamelth, osname);
return 0;
}

居然提示:expected declaration specifiers or '...' before '_sysctl'
在红帽子下面提示_sysctl未定义,请高手解答

|
在我的suse中在include最后加上一行
#include 
后编译成功。就是简单的编译:gcc -o test test.c

_syscall1(int, _sysctl, struct __sysctl_args *, args);
这一行本身是一个宏,展开后就是对_sysctl的声明。

你确定一下这个文件是否存在:
/usr/include/linux/sysctl.h

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java开源软件 iis7站长之家
  • 请教大家 /etc 下没有sysctl.conf这个文件
  • 求个ubuntu服务器的sysctl.conf文件
  • linux-3ES-13.9.5安装oracle10g时更改/etc/sysctl.conf没有kernel.shmmax,kernel.shmmni
  • 在linux下安装oracle时,使用sysctl检查系统参数时出现许多error信息,不知道怎么回事,望高手指点!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3