当前位置: 首页 > news >正文

做地方网站数据哪里来中企动力网站建设合同

做地方网站数据哪里来,中企动力网站建设合同,福州网站设计哪家做的好,惠州网站建设找哪个公司在聊进程替换之前,有一些基础知识我们得先弄清楚。掌握了这些内容,不仅能让你更轻松地理解 Shell 是如何工作的,还能为之后的进程替换操作铺好路。进程替换说白了就是 Shell 的基本原理,它能把一个命令的输出直接当成另一个命令的…

在聊进程替换之前,有一些基础知识我们得先弄清楚。掌握了这些内容,不仅能让你更轻松地理解 Shell 是如何工作的,还能为之后的进程替换操作铺好路。进程替换说白了就是 Shell 的基本原理,它能把一个命令的输出直接当成另一个命令的输入来用。这背后,其实就是 Shell 在和操作系统打交道时,靠进程管理、命令参数解析以及路径管理等技巧实现的。

main函数参数介绍

刚学习c语言的时候,我们一定解除了很多main函数的形式,最后我们肯定是最多使用无参数类型的main函数,那么那些main函数里带参数的形式,到底是干什么的呢,有这些形式,肯定不是无用的。

int main(int argc,char* argv[])

argc 参数

argc 表示传递给程序的命令行参数的个数。这个参数不用传递,编译器会根据你输入的argv数组内参数的个数自动给出

argv 参数

argv 是一个字符指针数组,存储了传递给程序的命令行参数。argv[0] 通常是是程序的名称。

int main(int argc,char* argv[])
{cout << argc << endl;for (int i = 0; argv[i]; i++){cout << argv[i] << " ";}cout << endl;return 0;
}

我们可以很清楚的看出,参数被传递到了main函数里,那么也就是说,我们也可以通过对一个程序的参数传递让我们所写的程序运行不同的结果,这个跟shell的bash命令行输入的形式是不是很像,那么我们还有一个疑问,为什么我们输入的命令 比如 ls -a -l 这样的命令,并不需要我们使用路径来执行呢?这就需要提到Linux的环境变量了!

环境变量

查看环境变量

env 
printenv
echo $PATH  //查看特定的环境变量

这两个命令都可以让我们直接查看操作系统的环境变量,那么为什么我们使用的 ls 等命令不用我们使用路径来执行呢?

我们可以在环境变量里PATH下看到,我们所执行的ls命令的路径已经被添加到了PATH中,也就是说,当我们不使用路径去使用这些命令的时候,操作系统会直接在PATH下的路径中去查找这些程序,如果存在就可以直接执行,如果不存在就会报错。 

同样,我们也可以使用路径来执行ls命令

我们直接输入的ls 命令有颜色的原因是shell这个外壳程序在进行命令解析的时候加上的 --color ,既然这样我们是不是也可以通过在PATH路径中加上我们程序所在的路径直接执行呢?当然可以

PATH=$PATH:/路径

 这样我们就可以直接执行这个命令了

PATH通过:来分割路径,如果输错,问题不大,重启shell即可,我们当前对环境变量的操作只对这个打开shell有用,那么也就是说,每一次,我们打开shell启动Linux,都会重新生成环境变量,在root用户下, etc/profile 里保存的shell脚本就是每一次要执行的生成环境变量的程序,但是最上面的注释还是很重要的

我们可以尝试去看看这个文件,但千万不要去修改这个文件原有的内容,如果需要修改,我们可以通过加入需要执行的shell脚本来自定义。

环境变量内容

看我圈出来的内容,不正是命令行提示的信息

程序获取环境变量

既然我们已经可以获取命令行参数,那么我们应该如何获取环境变量并输出一个类似于shell程序的

 呢?

int main(int argc,char* argv[],char* env[])

我们可以通过main函数参数直接获得,既然我们已经知道了我们所运行的程序就是BASH进程的子进程,子进程可以直接获得父进程的环境变量,就类似于C++缺省参数,也可以由我们父进程进行传递(子进程继承父进程的环境变量,父进程修改环境变量传递给子进程)。

int main(int argc,char* argv[],char* env[])
{for (int i = 0; env[i]; i++){cout << env[i] << endl;}cout << endl;return 0;
}

 截了一部分

同时,系统调用接口也有:

char *getenv(const char *name); //获取特定的环境变量的值

类似于 echo $name , 返回环境变量的值(字符串),如果环境变量不存在,返回NULL。

int setenv(const char *name, const char *value, int overwrite);
//更改环境变量的值
  • name:环境变量的名称。  value:要设置的值。overwrite:如果为非零值,则在环境变量已存在的情况下覆盖其值;如果为零,则保留原值。
int unsetenv(const char *name);//删除指定的环境变量
extern char **environ;
//environ 是一个全局变量,指向一个字符串数组,包含所有的环境变量。

我们也可以通过直接访问这个全局变量去获得所有环境变量。

仿写命令提示符

[zws@hcss-ecs-942f pipe_use]$
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;#define PWD_CUT "/"char* Username()
{return getenv("USER");
}char* getPwd()
{char *pwd = getenv("PWD");char *token = strtok(pwd, PWD_CUT);  //将特定分隔符的字符串分开char *last_token;while (token != NULL){last_token = token;  token = strtok(NULL, PWD_CUT); //必须先使用strtok分开一次,剩下的就不用传入字符串}return last_token;
}char* HostName()
{return getenv("HOSTNAME");
}int main()
{printf("[""%s@%s %s""]""#",Username(), HostName(), getPwd());cout << endl;return 0;
}

 

 

http://www.yayakq.cn/news/69681/

相关文章:

  • 公众号怎么制作好看的版面外贸网站优化怎么做
  • 模块网站网站开发设计有哪些
  • 南通哪里做网站衡水seo_衡水网站建设-燕丰收
  • 印刷 网站源码网站建设零基础好学吗
  • 俄文网站建设方案黄骅怎么读
  • 石家庄微信网站制作网站建设经营特色
  • 深圳做棋牌网站建设哪家服务好银行网站建设方案视频
  • 山东seo网站网站流量被用完了
  • 网站转化微信小程序企业vi是什么
  • 做网站 参考文献网站建设公司做网站需要注意什么
  • 网站建设官方商城威海网站建设哪家的好
  • 微信如何绑定网站专业的网站开发团队
  • 0基础建站教程内网门户网站 建设方案
  • 博客做资讯类网站做瑜珈孕妇高清图网站
  • 东城区网站建设公司网页系统升级每天自动更新
  • 做白酒的网站注册一个平台需要多少钱
  • 和平网站建设优化seo我的世界做图片网站
  • 金华市建设技工学校教育培训网站wordpress邮件函数
  • 建设工程造价管理协会网站外贸网站的作用有哪些
  • 途牛旅行网站建设策划书网站建设凭证
  • 做内贸的电子商务网站典型有wordpress后台变慢
  • 做网站容易还是编程容易有哪些下载软件的应用
  • 微信微网站制作公司做网站数据库怎么整
  • 九江 网站建设做网站应该注意哪些方面
  • 济南专业网站建设哪家便宜.net网站吃内存
  • 网站非法篡改wordpress通栏图片插件
  • 金华app网站开发宜宾有什么大型网站建设公司
  • 个人兼职做建设网站湖南网站建设公司 干净磐石网络
  • 网站点击率多少正常wordpress 作者 英文版
  • 建站合同网站排名套餐