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

再问一个System的问题

    来源: 互联网  发布时间:2016-06-02

    本文导语:  小弟在程序中需要判断当前用户的Linux是Fedora、Ubuntu或者其他版本的Linux。 我知道在终端输入uname -a就可以从终端看到当前系统的类型或者版本。 于是就想到在程序里面调用system("uname -a ");。问题就出来了,有...

小弟在程序中需要判断当前用户的Linux是Fedora、Ubuntu或者其他版本的Linux。
我知道在终端输入uname -a就可以从终端看到当前系统的类型或者版本。
于是就想到在程序里面调用system("uname -a ");。问题就出来了,有什么办法能够让程序接受调用system("uname -a ")后在终端显示的内容呢?
在Google上找了很久没有找到相关帮助,自己就想到把终端显示出来的内容存到一个临时文件中,调用如下system("uname -a > temp.ini");然后程序再通过读取文件内容的方法获取当前Linux的版本。最后程序退出时候再删除刚刚的临时文件temp.ini
上面这种方法是可行的,但个人总感觉有点太繁琐了,还涉及到在磁盘上读写文件。所有想问各位大虾两个问题:
1.程序需要判断当前Linux的版本有没有其他简单的方法,例如直接调用一个系统接口就知道当前的系统是Fedora或者Ubuntu等等。
2.有什么办法能够让程序接受调用system("uname -a ")后在终端显示的内容? 除了我上面写的通过写到临时文件里面,有更简便的方法么?

谢谢了。

|
用pipe就可以捕捉到 uname -a 的输出:



#include 
#include 
#include 
#include 

int main()
{
FILE *fp;
char buffer[BUFSIZ + 1];
int count;

memset(buffer, '', sizeof(buffer));
fp = popen("uname -a", "r");
if (fp != NULL) {
count = fread(buffer, sizeof(char), BUFSIZ, fp);
if (count > 0) {
//得到输出内容,保存在buffer
printf("Output was:-n%sn", buffer);
}
pclose(read_fp);
exit0;
}
exit 1;
}



|
建议楼主直接用系统函数uname。
SYNOPSIS
     #include 

     int uname(struct utsname *name);

DESCRIPTION
     The uname()  function  stores  information  identifying  the
     current  operating  system  in  the  structure pointed to by
     name.

     The uname() function uses the utsname structure, defined  in
     , whose members include:

     char    sysname[SYS_NMLN];
     char    nodename[SYS_NMLN];
     char    release[SYS_NMLN];
     char    version[SYS_NMLN];
     char    machine[SYS_NMLN];

     The uname() function  returns  a  null-terminated  character
     string  naming the current operating system in the character
     array sysname. Similarly, the nodename member  contains  the
     name  by  which the system is known on a communications net-
     work.  The release and version members further identify  the
     operating  system.  The  machine  member contains a standard
     name that identifies the hardware  on  which  the  operating
     system is running.

RETURN VALUES
     Upon  successful  completion,  a   non-negative   value   is
     returned.  Otherwise,  -1  is  returned  and errno is set to
     indicate the error.

    
 
 

您可能感兴趣的文章:

  • 关于程序里面system不返回的问题
  • system() 返回值问题
  • 救命啊,一个system调用的问题
  • system("sudo reboot"),问题,希望帮助!
  • 关于多系统启动的问题(用System Commander),急!!!
  • 急问:Linux程序中,使用system函数的几个问题
  • 请解释一下一个很简单的问题:System.out.println(".......");……
  • php 使用system() 调用c程序的问题
  • system.err问题
  • 关于system()函数的问题
  • system系统调用的问题
  • linux system函数调用问题
  • linux平台下system函数的使用问题
  • 请教unix下execvp和system函数的问题
  • 各位大哥借个地方,问一个macintosh system与VB的问题。
  • 一个有关System.in.read()的问题?
  • 一个很可笑的问题,System.in怎么用,立刻给分
  • 关于system.loadLibrary()的问题
  • 关于unix system call的简单问题
  • 一个关于System函数的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.sound.midi类shortmessage的类成员方法: system_reset定义及介绍
  • 请问System.out.print和System.out.printIn有什么不同?
  • java命名空间javax.swing.text.html.parser接口dtdconstants的类成员方法: system定义及介绍
  • System.exit(0);和System.exit(1)有什么区别?
  • java命名空间javax.sound.midi类sysexmessage的类成员方法: system_exclusive定义及介绍
  • 谁有 novell 3.12 的SYSTEM_1 和 SYSTEM_2 的软盘内容吗?[分不够可增加]
  • java命名空间javax.xml.transform类outputkeys成员方法: doctype_system定义参考
  • POSIX.1要求system忽略SIGINT和SITQUIT,阻塞SIGCHLD,求解释。UNIX环境高级编程 system函数
  • java命名空间javax.swing类jfilechooser的类成员方法: file_system_view_changed_property定义及介绍
  • 请问java.lang.System是一个类吧??那么System.out.print()中的out充当什么角色呢?还是类???
  • java命名空间java.lang.management类managementfactory的类成员方法: operating_system_mxbean_name定义及介绍
  • 现在用 System.exit(0) or System.exit(1) 来退出弹出窗口,但是连父窗口一起关闭(紧急求解)
  • java命名空间java.lang类system的类成员方法: in定义及介绍
  • System.out.println() 和System.err.println()有什么区别?THANKS
  • java命名空间javax.print.attribute.standard类jobstatereason的类成员方法: aborted_by_system定义及介绍
  • 在线等,请问system函数返回值是什么值,怎么判断system运行是否成功?
  • java命名空间java.lang类system的类成员方法: gc定义及介绍
  • 深入解析System.load 与 System.loadLibrary
  • java命名空间java.lang类system的类成员方法: console定义及介绍
  • catch异常的时候用System.out.print()和用System.err.print()来输出有什么区别啊?
  • java命名空间java.lang类system的类成员方法: runfinalization定义及介绍
  • system(command) 与 command 的区别


  • 站内导航:


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

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

    浙ICP备11055608号-3