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

简介: 通过命令传递参数查看环境变量  /************************************************************************* > File Name: env.

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

/*************************************************************************
	> 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);
}



目录
相关文章
|
1月前
|
安全 Linux iOS开发
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
142 6
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
|
6月前
|
安全 Linux
Slax Linux如何获取增强的会话管理与启动参数选项
以上就是关于在Slax Linux中获取增强的会话管理与启动参数选项的全过程。虽然在这个过程中可能会遇到暗礁和风浪,但只要我们用心驾驶,总能找到前行的道路。在旅程中,记得享受这中间的点点滴滴,因为这些都是你成长的痕迹。祝你在这片“数码海洋”中一帆风顺!
136 26
|
7月前
|
Linux Shell
shell_42:Linux参数移动
总的来说,参数移动是Linux shell脚本中的一个重要概念,掌握它可以帮助我们更好地处理和管理脚本中的参数。希望这个解释能帮助你理解和使用参数移动。
164 18
|
安全 Linux Shell
Linux上执行内存中的脚本和程序
【9月更文挑战第3天】在 Linux 系统中,可以通过多种方式执行内存中的脚本和程序:一是使用 `eval` 命令直接执行内存中的脚本内容;二是利用管道将脚本内容传递给 `bash` 解释器执行;三是将编译好的程序复制到 `/dev/shm` 并执行。这些方法虽便捷,但也需谨慎操作以避免安全风险。
402 7
|
8月前
|
Java Linux 应用服务中间件
在Rocky Linux 9上安装JDK并配置环境变量!
本教程介绍在Rocky Linux 9上安装JDK并配置环境变量的完整步骤。首先更新系统,清理旧版本JDK相关包及残留文件,确保环境干净。接着搜索并安装所需版本的JDK(如OpenJDK 17),验证安装是否成功。然后查找JDK安装路径,配置全局环境变量`JAVA_HOME`和`PATH`,最后验证环境变量设置。按照此流程操作,可顺利完成Java开发环境搭建,支持多版本切换(如JDK 8/11/17)。生产环境请谨慎操作,避免影响现有服务。
1380 21
|
网络协议 Linux
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
1308 2
|
Linux Python
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
458 2
|
8月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
在Linux中,列出几种常见打包工具并写相应解压缩参数。
在Linux中,列出几种常见打包工具并写相应解压缩参数。