用C打印系统名称?

时间:2016-01-29 23:21:15

标签: c linux operating-system

假设我已经编译myname.c以获取可执行文件myname。  我想在命令后打印操作系统名称:

$ myname --system-name

输出:Linux

这是我到目前为止所拥有的

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/utsname.h>

int main(int argc, char **argv) {

   struct utsname buffer;
   char str[70];
   scanf("%[^\n]",str);

   if (uname(&buffer) == system-name){

        printf(
            "%s",
            (&buffer)->sysname,
        );

   }

3 个答案:

答案 0 :(得分:2)

我认为这应该有效(你的缓冲区不是一个指针而你的if语句不是很明智,你也应该从那个声明方法中返回一些东西):

#include <stdio.h>
#include <stdlib.h>
#include <sys/utsname.h>

int main(int argc, char **argv) {
  struct utsname uts;
  if(uname(&uts) !=0 ) {
    return EXIT_FAILURE;
  }
  printf("%s\n",uts.sysname);
  return EXIT_SUCCESS;
}

答案 1 :(得分:2)

在linux上有一些信息,您可以使用以下内容:

#include<stdio.h>
#include<sys/utsname.h>

int main(void){
    struct utsname detect;

    uname(&detect);

    printf("System name - %s \n", detect.sysname);
    printf("Nodename    - %s \n", detect.nodename);
    printf("Release     - %s \n", detect.release);
    printf("Version     - %s \n", detect.version);
    printf("Machine     - %s \n", detect.machine);
    printf("Domain name - %s \n", detect.__domainname);

    return 0;
}

输出:

System name - Linux 
Nodename    - michi 
Release     - 3.19.0-32-generic 
Version     - #37~14.04.1-Ubuntu SMP Thu Oct 22 09:41:40 UTC 2015 
Machine     - x86_64 
Domain name - (none)

答案 2 :(得分:0)

我认为这是你正在寻找的东西:

<?php
session_start();

$twoDaysBack = time() - 60 * 60 * 24 * 2;
setcookie('Email', '', $twoDaysBack);

$_SESSION = array(); 
session_unset();
session_destroy();

header("Location:Home.php");
exit();
 ?>

if (strcmp(str, "system-name") == 0){ printf("%s\n", buffer.sysname); } 是用于比较字符串的C函数,因此这将检查用户是否输入了strcmp()

当你有一个结构时,你可以使用system-name来访问它的一个元素,你不需要获取它的地址并使用间接。您的.参数列表末尾还有一个额外的逗号。