uname(1)的基本实现(C语言)
来源:互联网 发布:生产制造业erp软件 编辑:程序博客网 时间:2024/06/06 02:54
今天看《unix环境高级编程》里面的一道作业题,实现uname(1),所以自己就动手敲了代码,主要是利用uname函数返回一个结构的指针,然后一一解读结构指针的内容,这个实现还包括参数的配合,用户可以选择参数来输出想要的内容,还可以配合-h参数来输出帮助信息呢。这段代码虽然简单,但是完成后还是挺开心,突然就有个想法,以后要慢慢把Linux上的命令用C语言来实现,加油,我可以的。下面是代码:
/*********************************************************** Program:example for uname(1). History:2013/05/20dingdongFirst release************************************************************/#include "apue.h"#include <sys/utsname.h>#include <stdio.h>intmain(int argc,char *argv[]){struct utsname*name=malloc(1);char*buf=malloc(MAXLINE);inti,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);}
- uname(1)的基本实现(C语言)
- C语言实现----顺序表的基本操作(1)
- 几个基本排序算法的代码实现(C语言)
- C语言实现单链表(带头结点)的基本操作
- Avl树的基本操作(c语言实现)
- 单链表的基本操作(C语言实现)
- 数据结构--单链表的基本操作(C语言实现)
- 链栈的基本操作实现(c语言)
- 数据结构--单链表的基本操作(C语言实现)
- 单链表的基本操作(C语言实现)
- 顺序线性表的基本操作(C语言实现)
- 基本的c语言编译器的实现
- uname(系统调用)
- 单链表的基本算法1---C语言实现
- C语言的基本数据类型(9)
- 数据结构C语言实现线性表(顺序实现)的初始化与基本操作
- 堆栈的简单实现之一:基本操作(C语言实现)
- 基本排序算法的C语言实现
- SIFT算法详解
- PCI设备BAR空间的初始化
- scheduler_tick函数
- 基于DP法的水电站中长期优化调度
- hibernate配置入门
- uname(1)的基本实现(C语言)
- 关于hibernate的is not mapped问题
- 【configuration】Eclipse使用总结
- 流行软件名称的标准发音:nagios,nginx,lucene,mahout,hadoop,cacti,ceph,selenium
- 优化php性能的五个实用技巧:
- Android Camera 使用小结
- Boost Thread学习笔记
- 【转载】2010 BlackHat - 即时恶意软件分析和控制方案
- PCI 中的base address register(转)