Linux C Programing - Arguments(2)
#include <iostream>
#include <stdlib.h>
#include <stdio.h> //printf
#include <unistd.h> //extern char **environ
using namespace std; #include <vector>
#define _GNU_SOURCE #include <getopt.h> // THIS PROGRAM CAN ./program --env=HOME
// ./program -e HOME
// ./program --e HOME
// ./program -h
// ./program --h or ./program --help
extern char **environ;
int main(int argc,char *argv[])
{
/*
cout << "Hello, World!" << endl;
char *v_char = "houdini";
char *v_char_list[5]={"jack","luke"}; cout << v_char<<endl;
cout << v_char_list[0]<<endl;
return 0;
*/ /*
char *v_char_list[] = {"jack","luke"};
char **v_char_point = v_char_list; while(v_char_point!=NULL)
{
cout<<*v_char_point<<endl;
v_char_point++;
}
*/ if (argc<=)
{
printf("THIS IS A LINUX TOOLS BASED ON KATANA,PLEASE -h/--help SHOW TIPS\n");
} int opt;
struct option longopts[] = {
{"env",,NULL,'e'},
{"help",,NULL,'h'},
{"showenv",,NULL,'s'},
{,,,}
};
while ((opt=getopt_long(argc,argv,":e:h:s",longopts,NULL)) != - )
{
switch (opt) {
case 'e':
{
printf("get new option: %s \n", optarg);
char *env_name = getenv(optarg);
if (env_name)
{
printf("%s value is %s \n", optarg, env_name);
}
else
{
printf("The %s env do not exist\n", env_name);
}
break;
}
case 'h':
{
printf("\033[40;37m -h/--help : This Program helps\n \033[0m");
printf("\033[40;37m -e=value/--env=value : You want get the env value\n \033[0m");
printf("\033[40;37m -s/--showenv : show current environment \n \033[0m");
printf("\n");
break;
}
case 's':
{
char **env=environ;
while(*env)
{
printf("%s\n",*env);
env++;
}
break;
}
case '?':
printf("unkown option: %c \n",optopt);
break;
}
};
for(;optind<argc;optind++)
{
printf(" \"%s\" argument have no use...: \n",argv[optind]);
} exit();
}
Linux C Programing - Arguments(2)的更多相关文章
- First step to Signal —— in Linux C Programing
1. What's signal 信号是软件中断,提供了一种处理异步事件的方法.(见<Unix环境高级编程>)一般使用时需包含 signal.h 库. 每个信号命名由SIG开头,实际值为正 ...
- Linux C Programing - Terminal(1)
#include <stdio.h> //getchar() putchar() printf() gets() puts() sprintf() #include <stdlib. ...
- Linux 驱动开发
linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...
- 0.大话Spring Cloud
天天说Spring cloud ,那到底它是什么? 定义 它不是云计算解决方案 它是一种微服务开发框架 它是(快速构建分布式系统的通用模式的)工具集 它基于Spring boot 构建开发 它是云原生 ...
- linux bash中too many arguments问题的解决方法
今天在编写shell脚本时,在if条件后跟的是[ $pid ],执行脚本的时候报 然后我输入改为[[$pid]]后,再执行脚本,就成功了,代码如下: #!/bin/bash pid=`ps -ef|g ...
- Linux - Python的虚拟环境配置的坑 virtualenv: error: unrecognized arguments: --no-site-packages
如果你在CentOS8下面配置虚拟环境时,遇到如下错误: [root@localhost ~]# mkvirtualenv my_django usage: virtualenv [--version ...
- 马哥Linux base学习笔记
介绍课程: 中级: 初级:系统基础 中级:系统管理.服务安全及服务管理.shell脚本 高级: MySQL数据库: Cache & storgae 集群: Cluster lb: 4la ...
- Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part2:clusterware安装和升级
Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part2:clusterware安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 3.安装Clus ...
- 深入理解 JavaScript,以及 Linux 下的开发调试工具
前言 JavaScript 是我接触到的第二门编程语言,第一门是 C 语言.然后才是 C++.Java 还有其它一些什么.所以我对 JavaScript 是非常有感情的,毕竟使用它有十多年了.早就想写 ...
随机推荐
- Git分布式项目管理
Git简介 Git是什么? Git和SVN一样都是一种高效的管理代码的系统. Git是目前世界上最先进的分布式版本控制系统(没有之一). 创建版本库 什么是版本库呢?版本库又名仓库,英文名 ...
- Oracle三大经典表连接适用情况
1.1环境准备 1.2 Nested Loops Join 从上面的试验来看,nested loop jion基本上是没有限制的,可以支持所有的运算. 1.3 Hash Join 1.4 Merge ...
- vs2013如何在C++中调用Lua(二)
Lua学习笔记 vs2013如何在C++中调用Lua (此为转载教程) 本人试过完全可行 一.准备工作 1.下载Lua源码,地址:http://www.lua.org/download.html(我用 ...
- Mysql的时间和日期
datetime 占8个字节 可以显示日期同时显示时间 yyyy-mm-dd hh:mm:ss 显示范围 1000-01-01 00:00:00----9999-12-31 23:59 ...
- SpringBoot实例
7player 7号球员 -- Show Time !跳至内容 首发 左边锋 技术流 外援 教练 7号 基于SpringBoot + Mybatis实现SpringMVC Web项目[原创] 目录 [ ...
- Android课程---Oracle VM VirtualBox出现不能为虚拟机打开一个新任务
因工作需要在Win7下增添了Win7虚拟系统,随着VirtualBox 4.326的版本更新,用户们也开始升级.一用户在升级后发现原来创建的虚拟机无法打开,提示信息为:不能为虚拟电脑win7打开一个新 ...
- 20145218&20145240 《信息安全系统设计基础》实验一 开发环境的熟悉
20145218&20145240 <信息安全系统设计基础>实验一 开发环境的熟悉 课程:信息安全系统设计基础 班级:1452 姓名:(按贡献大小排名)刘士嘉 张晓涵 学号:(按贡 ...
- NEC学习 ---- 模块 -水平文字链接列表
HTML代码: <div class="container"> <div class="m-list1"> <ul class=& ...
- rabbitmq之partitions
集群为了保证数据一致性,在同步数据的同时也会通过节点之间的心跳通信来保证对方存活.那如果集群节点通信异常会发生什么,系统如何保障正常提供服务,使用何种策略回复呢? rabbitmq提供的处理脑裂的方法 ...
- chrome下input[type=text]的placeholder不垂直居中的问题解决
http://blog.csdn.net/do_it__/article/details/6789699 <input type="text" placeholder=&qu ...