以 C 语言打印系统名称



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

$myname --系统名称

输出: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,
        );
   }

我认为这应该有效(您的缓冲区不是指针,并且您的 if 语句不合理,您还应该在该声明方法中从 main 返回一些内容):

#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("%sn",uts.sysname);
  return EXIT_SUCCESS;
}

在 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)

我认为这就是你要找的:

if (strcmp(str, "system-name") == 0){
    printf("%sn", buffer.sysname);
}

strcmp()是用于比较字符串的 C 函数,因此这将检查用户是否输入了system-name

当您有一个结构时,您可以使用.来访问其中的元素,您无需获取其地址并使用间接寻址。您在printf()参数列表的末尾还有一个额外的逗号。

相关内容

  • 没有找到相关文章

最新更新