linux c 实现uname命令

news2023/12/3 5:39:17

《unix环境高级编程》作业题,实现uname

#include "apue.h"
#include <sys/utsname.h>
#include <stdio.h>
 
int
main(int argc,char *argv[])
{
	struct utsname	*name=malloc(1);
	char		*buf=malloc(MAXLINE);
	int		i,j,k=0,flag=0;/*i,j for argv,k for buf,flag for error*/
 
	if(uname(name)==-1)
		err_sys("uname error");
 
	for(i=1;i<argc;i++)
	{
		for(j=0;argv[i][j]!='\0';j++)
		{
			if(argv[i][j]!='-')/*collect the parameters*/
			{
				buf[k]=argv[i][j];
				k++;
			}
		}
	}
	buf[k]='\0';
	
	for(k=0;buf[k]!='\0';k++)
	{
		switch(buf[k])
		{
		case 's':printf("%s ",name->sysname);break;
		case 'n':printf("%s ",name->nodename);break;
		case 'r':printf("%s ",name->release);break;
		case 'v':printf("%s ",name->version);break;
		case 'm':printf("%s ",name->machine);break;
		case 'a':printf("%s %s %s %s %s",name->sysname,name->nodename,
				name->release,name->version,name->machine);
			 break;
		case 'h':printf("***************************************\n");
			 printf("* Parameters            Function      *\n");
			 printf("*     -s           print the sysname  *\n");
			 printf("*     -n           print the nodename *\n");
			 printf("*     -r           print the release  *\n");
			 printf("*     -v           print the version  *\n");
			 printf("*     -m           print the machine  *\n");
			 printf("*     -a           print all of above *\n");
			 printf("***************************************\n");
			 break;
		default: flag=1;
			 printf("%s: extra operand %s\n",argv[0],argv[1]);
			 printf("Try 'uname -h' for more information.\n");
			 break;
		}
		if(flag)break;/*if have extra patameters then break.*/
	}
	printf("\n");
	exit(0);
}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://nwjs.net/news/300122.html

如若内容造成侵权/违法违规/事实不符,请联系七分地网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙0s是什么意思,华为官宣,鸿蒙0S正式来临?

12月14日上午&#xff0c;华为消费者业务软件部总裁王成录确认&#xff0c;将于12月16日在北京发布鸿蒙OS 2.0手机开发者Beta版本。王成录发表微博称&#xff1a;“HarmonyOS正沿着我们在HDC上公布的路标快速成长&#xff0c;转眼又迎来新的里程碑。12月16日我将在北京发布Harm…

Qunee for HTML5 在电力方面的应用

2019独角兽企业重金招聘Python工程师标准>>> 网上找了几款&#xff0c;发现Qunee相对来说&#xff0c;比较容易上手。但是也不能直接使用&#xff0c;需要二次开发。 这里需要感谢Qunee官方技术人员的大力配合。使用得项目才可以顺利进入尾声。所有的图元基本上都是…

android游戏出现闪退问题怎么解决方法,游戏出现频繁闪退解决方法参考 游戏频繁闪退怎么办...

我们发现者在体验游戏的过程中&#xff0c;少部分玩家可能出现频繁闪退的情况&#xff0c;以下有两种方式可以解决该问题&#xff1a;1.删除游戏的Puffer文件目录【安卓】找到手机文件夹&#xff0c;找到天涯明月刀的Puffer目录/storage/emulated/0/Android/data/com.tencent.t…

整合用户篇—Oauth2理解与构造简单的系统

2019独角兽企业重金招聘Python工程师标准>>> 当你运营越来越多的项目&#xff0c;每个项目的业务都不一样&#xff0c;每个需要使用到这些业务的用户就需要注册方能进行使用。如果用户还需要使用其他项目的功能&#xff0c;就必须还得注册使用。造成反复注册&#x…

s7edge出现android停止,三星S7 Edge升级安卓7.0出现了这个问题!

三星从1月开始陆续为Galaxy S7、S7 Edge推送了Android 7.0(Nougat)系统更新&#xff0c;升级后的功能增加和提升不少&#xff0c;不过新系统也并不是十全十美&#xff0c;有用户反馈升级后的手机续航时间明显减少。对此&#xff0c;国外媒体进行了针对性测试&#xff0c;使用搭…

mac下完全卸载postgresql的方法

2019独角兽企业重金招聘Python工程师标准>>> 这里针对的是 9.3 版本。如是其他版下面的仅供参考。 1、如果是postgresql.app的形式&#xff0c;这个简单&#xff0c;跟其他app一样&#xff0c;删除app即可。 2、如果是使用installer图形界面方式安装的。则需要打开…

服务依赖性

转载于:https://www.cnblogs.com/coland/p/5500671.html

手动配置Hibernate的方法

2019独角兽企业重金招聘Python工程师标准>>> 前言&#xff1a;一直习惯用MyEclipse自动生成Hibernate&#xff0c;但是对手动配置一直不甚了解&#xff0c;都不好意思说自己是搞java的。所以赶紧复习了一下手动配置&#xff0c;并记录在此&#xff0c;以便常回来看看…

页面回顶

web开发中经常有页面回顶的需求&#xff0c;近期使用&#xff0c;代码较简单&#xff0c;但是很实用&#xff01; html: <a id"goTop" class"go-top" href"#header"><span class"go-top-inner"></span> </a> …

线刷一加5t android 9,一加5/5T 氢OS 9.0稳定四版 侧边工具 通知特效 Magisk 极速流畅 简约实用-刷机之家...

详情一加5/5T刷机包是小编推荐给大家使用的一款线刷包软件&#xff0c;功能丰富&#xff0c;一加5/5T 氢OS 9.0稳定四版 侧边工具 通知特效 Magisk 极速流畅 简约实用 是一加5/5T手机刷机的小帮手&#xff0c;有需要的朋友们不要错过!!刷机需知<<<<•一加手机的刷机…

mysql “group by ”与order by的研究--分类中最新的内容

这两天让一个数据查询难了。主要是对group by 理解的不够深入。才出现这样的情况这种需求&#xff0c;我想很多人都遇到过。下面是我模拟我的内容表我现在需要取出每个分类中最新的内容 select * from test group by category_id order by date结果如下明显。这不是我想要的数据…

python3 字符串格式化

字符串的格式化方法分为两种&#xff0c;分别为占位符(%)和format方式。占位符方式在Python2.x中用的比较广泛&#xff0c;随着Python3.x的使用越来越广&#xff0c;format方式使用的更加广泛。 一 占位符(%) %d 实例(Python3.0)&#xff1a; age 29 print("my age is …

SAX解析XML文件

就目前来说&#xff0c;有三种方式可以解析XML文件&#xff1a;DOM、SAX、StAX。DOM将整个XML文件加载到内存中&#xff0c;并构建出节点树&#xff1b;应用程序可以通过遍历节点树的方式来解析XML文件中的各个节点、属性等信息&#xff1b;这种方式便于对XML节点的添加修改等&…

用 namspace 隔离 DHCP 服务 - 每天5分钟玩转 OpenStack(90)

Neutron 通过 dnsmasq 提供 DHCP 服务&#xff0c;而 dnsmasq 如何独立的为每个 network 服务呢&#xff1f; 答案是通过 Linux Network Namespace 隔离&#xff0c;本节将详细讨论。 在二层网络上&#xff0c;VLAN 可以将一个物理交换机分割成几个独立的虚拟交换机。 类似地&a…

linux内存管理基本概念

1. Linux物理内存三级架构 对于内存管理&#xff0c;Linux采用了与具体体系架构不相关的设计模型&#xff0c;实现了良好的可伸缩性。它主要由内存节点node、内存区域zone和物理页框page三级架构组成。 • 内存节点node 内存节点node是计算机系统中对物理内存的一种描述方法&am…

华为鸿蒙10月17日,华为宣布10月17日重磅新机:鸿蒙系统+全球首发屏下摄像头...

今年华为手机太多大招&#xff0c;Mate30系列旗舰才开售不久&#xff0c;最近又曝光了一款顶级旗舰机&#xff0c;从曝光的真机渲染图来看&#xff0c;这款神秘机型将于10月17日在法国发布&#xff0c;手机渲染图四周超窄边框设计&#xff0c;值得注意的是手机右上角反光条纹&a…

linux 内存管理 page fault带来的性能问题

Linux进程如何访问内存 Linux下&#xff0c;进程并不是直接访问物理内存&#xff0c;而是通过内存管理单元(MMU)来访问内存资源。 原因后面会讲到。 为什么需要虚拟内存地址空间 假设某个进程需要4MB的空间&#xff0c;内存假设是1MB的&#xff0c;如果进程直接使用物理地址…

Linux 自动重启进程

Js代码 #!/bin/sh echo "Current DIR is " $PWD # ignore signal hup int quit tstp trap "" 1 2 3 24 start_server() { ulimit -c unlimited # export LD_LIBRARY_PATHpwd/deps/capn/libs:$LD_LIBRARY_PATH # rm -f *.pid # nohu…

Lucene学习笔记:Field.Store.* 域存储选项

2019独角兽企业重金招聘Python工程师标准>>> Store.YES&#xff1a; 指定存储域值。该情况下&#xff0c;原始的字符串值全部都被保存在索引中&#xff0c;并可以由IndexReader类恢复。该选项对于需要展示搜索结果的一些域很有用(如URL、标题或数据库主键)。如果索引…

第四次作业 孙保平034 李路平029

用C编写一个学生成绩管理系统 1、可以实现以下功能&#xff1a; cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 1.增加学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl; 2、用链表存储信息 * 程序头部的注释结束 3、约定的规范&#xff1a; 1界面设计简介&#xff0c;人性化…