Linux下C程序设计(4)----操作环境变量 、程序传递参数getopt getopt_long操作、获取时间

通过命令传递参数查看环境变量 

/*************************************************************************
	> File Name: env.c
	> Author:
	> Mail:
	> Created Time: Tue 24 Feb 2015 10:42:21 PM PST
 ************************************************************************/

#include<stdio.h>
#include<stdlib.h>
int main(int argc,char**argv)
{
   char*p,*str ;
   if(argc==1||argc>3)
    {
        printf("Parameter Num is wrong!\n");
    }
    else if(argc==2)
    {
       if((p=getenv(argv[1])))
        {
            printf("Environment variable %s = %s\n",argv[1],p) ;
        }
    }
    else if(argc==3)
    {
       p=(char*)malloc(strlen(argv[1])+strlen(argv[2])+2) ;
       strcpy(p,argv[1]);
       strcat(p,"=");
       strcat(p,argv[2]);
       if(putenv(p)==0)
        {
           printf("put env successful\n");
        }
       if(str=getenv(argv[1]))
        {
           printf("Put Env %s:%s\n",argv[1],str);
        }else
        {
            printf("Get Env Error!\n");
        }
        //can not free on the front of this position
        free(p) ;
    }
    exit(0);
}

查看全局环境变量

/*************************************************************************
	> File Name: showenv.c
	> Author:
	> Mail:
	> Created Time: Tue 24 Feb 2015 11:17:39 PM PST
 ************************************************************************/

#include<stdio.h>
#include<stdlib.h>
extern  char ** environ ;
int main(int argc,char**argv)
{
    char **penv=environ ;
    while(*penv)
    {
        printf("%s\n",*penv) ;
        penv++;
    }
    exit(0);
}

时间操作

/*************************************************************************
	> File Name: time.c
	> Author:
	> Mail:
	> Created Time: Wed 25 Feb 2015 12:11:00 AM PST
 ************************************************************************/

#include<stdio.h>
#include<time.h>
int main(int argc,char**argv)
{
   char timeBuf[256];
   time_t tmt=time((time_t*)NULL) ;
   printf("unformat time :%d\n",tmt);
   printf("format time :%s\n",ctime(localtime(&tmt))) ;
   strftime(timeBuf,256,"%m:%d",localtime(&tmt));
   printf("format time:%s\n",timeBuf);

    exit(0);
}

获取登陆uid gid  user

/*************************************************************************
	> File Name: uid.c
	> Author:
	> Mail:
	> Created Time: Wed 25 Feb 2015 12:51:53 AM PST
 ************************************************************************/

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{
  printf("UID:%d\n",getuid());
  printf("GID:%d\n",getgid());
  printf("CurrentLogined:%s\n",getlogin());
  printf("GetHostID:%d\n",gethostid());

exit(0) ;
}


传递简单的程序参数

/*************************************************************************
	> File Name: option.c
	> Author:
	> Mail:
	> Created Time: Tue 24 Feb 2015 06:30:00 PM PST
 ************************************************************************/

#include<stdio.h>
#include<unistd.h>
int main(int argc,char**argv)
{
   int opt ;
   while((opt=getopt(argc,argv,":if:x"))!=-1)
   {
     switch(opt)
       {
          case '?':
             printf("Unknow Option:%c \n",optopt) ;
             break;
          case ':':
             printf("Option:%c need Value\n",optopt) ;
             break;
          case 'f':
             printf("File is %s \n",optarg) ;
             break;
          case 'i':
          case 'x':
             printf("Option : %c\n",opt) ;
             break ;
       }
   }
   for(;optind<argc;optind++)
    {
       printf("arguments: %s \n",argv[optind]) ;

    }
    exit(0);
}

更完善的传递参数

/*************************************************************************
	> File Name: option2.c
	> Author:
	> Mail:
	> Created Time: Tue 24 Feb 2015 09:16:58 PM PST
 ************************************************************************/

#include<stdio.h>
#include<unistd.h>
#include<getopt.h>
#define _GNU_SOURCE
int main(int argc,char**argv)
{
   int opt ;
    struct option optlist[]={
     {"add",0,NULL,'a'},
     {"file",1,NULL,'f'},
     {0,0,0,0}
    };
   while((opt=getopt_long(argc,argv,":af:xcv",optlist,NULL))!=-1)
    {
       switch(opt)
        {
            case 'a':
            case 'x':
            case 'c':
            case 'v':
              printf("Option:%c\n",opt) ;
              break;
            case ':':
              printf("Option Have Value!\n");
              break;
            case 'f':
              printf("File is  %s\n",optarg) ;
              break ;
            case '?':
              printf("Option is unknow!\n") ;
              break ;
        }
    }
        for(;optind<argc;optind++)
        {
            printf("Remained  Parameter :%s\n",argv[optind])  ;
        }
    exit(0);
}
时间: 2024-09-10 01:44:56

Linux下C程序设计(4)----操作环境变量 、程序传递参数getopt getopt_long操作、获取时间的相关文章

如何在linux下查看和添加PATH环境变量

$PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时, Linux在这些目录下进行搜寻编译链接. 编辑你的 PATH 声明,其格式为: PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N> 你可 以自己加上指定的路径,中间用冒号隔开.环境变量更改后,在用户下次登陆时生效,如果想立刻生效,则可 执行下面的语句:$ source .bash_profile 需

linux下查看和添加PATH环境变量

  $PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接. 编辑你的 PATH 声明,其格式为: PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N> 你可以自己加上指定的路径,中间用冒号隔开.环境变量更改后,在用户下次登陆时生效,如果想立刻生效,则可执行下面的语句:$ source .bash_profile 需要

构架Linux下的PHP+MySQL开发环境

作者:余海发 目前Web开发人员常使用的开发语言是PHP.ASP和JSP.这三种语言各有所长,也各自拥有一大批忠实的开发者和使用者.对于使用PHP做Web开发的人员来说,很多人选择了在Windows下进行开发,而最终开发出的程序则运行在Unix类(如Linux/FreeBSD)的操作系统上.开发环境和实施环境的不同,使得许多开发人员的系统知识稍显欠缺.作为一个使用PHP进行Web开发的人员而没有用过Linux,这种现象并不少见.更不要说具备一些简单的Linux系统知识,能够自己安装开发环境了.一

Linux下的PHP+MySQL开发环境的配置

目前Web开发人员常使用的开发语言是PHP.ASP和JSP.这三种语言各有所长,也各自拥有一大批忠实的开发者和使用者.对于使用PHP做Web开发的人员来说,很多人选择了在Windows下进行开发,而最终开发出的程序则运行在Unix类(如Linux/FreeBSD)的操作系统上.开发环境和实施环境的不同,使得许多开发人员的系统知识稍显欠缺.作为一个使用PHP进行Web开发的人员而没有用过Linux,这种现象并不少见.更不要说具备一些简单的Linux系统知识,能够自己安装开发环境了.一个开发人员了解

mac-Mac下用appium-doctor检查Android环境变量时出现问题

问题描述 Mac下用appium-doctor检查Android环境变量时出现问题 Running Android Checks ? ANDROID_HOME is set but does not exist on the file system at "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mac/Downloads/android-sdk-macosx/platform-tools:/Users/mac/Downloads/

linux下如何编写代码用于监控特定程序的CPU,内存,磁盘和网络使用情况?

问题描述 linux下如何编写代码用于监控特定程序的CPU,内存,磁盘和网络使用情况? 初学,linux(ubuntu)环境下,如何编写代码用于监控特定程序的CPU,内存,磁盘和网络使用情况?初学者,希望从这些基础程序入手,谢谢大家~ 解决方案 读取proc下面的文件. /proc/stat 里面是CPU使用情况,/proc/meminfo里面是内存使用情况,进程信息在/proc/$pid/stat,statm里面. /proc/net/dev里面是网络使用情况,磁盘IO可以使用iostat命令

Linux下JSP运行、开发环境的建立

js     一.安装JDK 1.4.2 虽然现在JSK和JRE最近的版本是1.5.0了,但是公司的开发人员统一用的还是1.4.2. 安装JRE和JDK的过程没啥好说的,用rpm包安装,傻瓜都会.装完后配置一下环境变量: vi /etc/profile 在该配置文件最后加这样几行: JAVA_HOME=/usr/local/java/jdk1.4.2_08 CLASSPATH=.:/usr/local/java/jdk1.4.2_08/lib/dt.jar:/usr/local/java/jdk

Fedora Linux中配置JDK5或JDK6环境变量

上帝终于拯救我了,好长时间都没有找到linux下配JDK环境变量的方法,网上搜了好久,很多都好像没什么作用,还有一些配上以后直接让我的系统崩溃了,昨天我同事给我一个配置方法清单,号称是屡试不爽,我怀着一颗惴惴不安的心情试验了一把,我配的是JDK6.0,没想到第一步完成后执行了一下java -version居然成了,为了保证文档的完整性,我现在把我同事给我的文档全部都贴出来与大家分享,反正,我是只做了第一步就OK了,我用的是Fedora5.大家如果跟我一样不知道如何在linux上配置JDK的可以试

CentOS 6.3下安装jdk并配置环境变量

首先我是在VMware10上装的CentOS6.3 要想在CentOS6.3上安装jdk,首先到jdk官网上去下载一个linux版本的jdk,网址是http://www.oracle.com/technetwork/Java/javase/downloads/jdk7-downloads-1880260.html 我下的是jdk-7u25-linux-x64.tar.gz,下下来之后把他复制到linux桌面上. 运行tar zxvf jdk-7u25-linux-x64.tar.gz(解压文件)