日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

进程环境

發布時間:2025/7/14 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 进程环境 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  

進程環境


  libc中定義的全局變量environ指向環境變量表,environ沒有包含在任何頭文件中,所以在使用時要用extern聲明。例如:
  

#include <stdio.h>
int main(void)
{
extern char **environ;
int i;
for(i=0; environ[i]!=NULL; i++)
printf("%s\n", environ[i]);
return 0;
}

?


  由于父進程在調用fork創建子進程時會把自己的環境變量表也復制給子進程,所以a.out(編譯以上程序所生成的應用程序)打印的環境變量和Shell進程的環境變量是相同的。
  按照慣例,環境變量字符串都是name=value這樣的形式,大多數name由大寫字母加下劃線組成,一般把name的部分叫做環境變量,value的部分則是環境變量的值。環境變量定義了進程的運行環境,一些比較重要的環境變量的含義如下:

PATH
* 可執行文件的搜索路徑。ls命令也是一個程序,執行它不需要提供完整的路徑名/bin/ls,然而通常我們執行當前目錄下的程序a.out卻需要提供完整的路徑名./a.out,這是因為PATH環境變量的值里面包含了ls命令所在的目錄/bin,卻不包含a.out所在的目錄。PATH環境變量的值可以包含多個目錄,用:號隔開。在Shell中用echo命令可以查看這個環境變量的值:
$ echo $PATH

SHELL
* 當前Shell,它的值通常是/bin/bash。

TERM
* 當前終端類型,在圖形界面終端下它的值通常是xterm,終端類型決定了一些程序的輸出顯示方式,比如圖形界面終端可以顯示漢字,而字符終端一般不行。

LANG
* 語言和locale,決定了字符編碼以及時間、貨幣等信息的顯示格式。

HOME
* 當前用戶主目錄的路徑,很多程序需要在主目錄下保存配置文件,使得每個用戶在運行該程序時都有自己的一套配置。


  用environ指針可以查看所有環境變量字符串,但是不夠方便,如果給出name要在環境變量表中查找它對應的value,可以用getenv函數。
  

#include <stdlib.h>

char *getenv(const char *name);

getenv的返回值是指向value的指針,若未找到則為NULL。


修改環境變量可以用以下函數

#include <stdlib.h>

int setenv(const char *name, const char *value, int rewrite);
void unsetenv(const char *name);

putenv和setenv函數若成功則返回為0,若出錯則返回非0。


setenv將環境變量name的值設置為value。如果已存在環境變量name,那么:
若rewrite非0,則覆蓋原來的定義;
若rewrite為0,則不覆蓋原來的定義,也不返回錯誤。
unsetenv刪除name的定義。即使name沒有定義也不返回錯誤。

例:修改環境變量

#include <stdlib.h>
#include <stdio.h>
int main(void)
{
printf("PATH=%s\n", getenv("PATH"));
setenv("PATH", "hello", 1);
printf("PATH=%s\n", getenv("PATH"));

return 0;
}


//fork--------------------------------------------------------------------------
#include <stdio.h> #include <unistd.h> #include <stdlib.h>int main(void) {pid_t pid;int n = 0;printf("this is a test\n");/**上面的語句如果沒有\n那么就會在子進程中也打印一句*這個是由于printf的機制造成的,遇到\n就出棧,*若沒有\n那么會在執行下一條語句前出棧,*而下一條語句是fork,此時已經復制主進程的環境,其中包括打印*/pid = fork();//調用fork時,子進程會從下面的語句開始執行if(pid > 0){while(1){n = 10;//兩個n的值是不一樣的,那是因為讀時共享,寫時復制printf("I am parent n = %d , &n = %p\n",n,&n);sleep(2);}}else if(pid == 0){while(1){//兩個n的地址是一樣的,那是因為虛擬地址一樣的原因//但是n的值是不一樣的,那是因為讀時共享,寫時復制printf("I am child n = %d , &n = %p\n",n,&n);sleep(2);}}else{perror("fork");exit(1);}return 0; }

?

轉載于:https://www.cnblogs.com/13224ACMer/p/6384904.html

總結

以上是生活随笔為你收集整理的进程环境的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美成人中文字幕 | 麻豆一区二区三区四区 | 五月天在线播放 | 久久久高清免费视频 | 国产尻逼视频 | 超碰在线伊人 | 青青视频免费观看 | 欧美大片一区二区 | 欧美性生活一级 | av观看网| 欧美亚洲精品在线观看 | 大乳女喂男人吃奶视频 | 久久综合成人网 | av在线免费播放网址 | 少妇一级淫片免费放播放 | 日本国产精品 | 日产国产亚洲精品系列 | 噜噜色成人 | 久久高清内射无套 | 第一毛片| 夜夜撸| 国产馆av | 黄瓜视频在线免费观看 | www.久久久久久久久久 | 26uuu亚洲国产精品 | 看91| 精品看片 | 色妞色视频一区二区三区四区 | 日韩少妇裸体做爰视频 | 一区视频免费观看 | 欧美,日韩,国产在线 | 国产综合在线观看 | 色五夜| 成人小视频在线看 | 欧美绿帽交换xxx | 欧美性生活一级 | 黄色网www| 无遮挡无掩盖网站 | 久久免费影院 | 激情伦成人综合小说 | 黑人高潮一区二区三区在线看 | 欧美黑人粗大 | 日韩bbw| 黄网站在线播放 | 午夜tv| 成人性生活免费看 | 欧美精品国产一区二区 | 欧美日韩国产91 | 51成人网| 国产大片黄 | 国产大屁股喷水视频在线观看 | 久久精品国产熟女亚洲AV麻豆 | 亚洲私人网站 | 国产成人一级片 | 成年人黄色小视频 | 欧美在线日韩在线 | 成人午夜在线播放 | 涩涩片影院 | 欧美xxxxx视频 | 免费在线观看网址 | 午夜精品久久久久久久久久久久 | 男女www视频 | 国产区在线视频 | 劲爆欧美第一页 | 中文成人无字幕乱码精品区 | 国产成人精品免高潮在线观看 | 五月天丁香婷 | 欧美hdxxxx| 日韩熟女一区二区 | 欧美一区二区网站 | av色片| 国产精品suv一区二区三区 | 亚洲av无码国产精品久久不卡 | 免费看污片的网站 | 国产精品99久久久久久www | 亚洲精品尤物 | 香蕉视频免费看 | 久久999 | 天天草天天草 | 中国人妖和人妖做爰 | 免费视频污 | 日本一区二区在线播放 | 国产情侣自拍一区 | 国产精品国产三级国产传播 | 天天综合网天天综合 | 色综合一区二区三区 | 日韩欧美aⅴ综合网站发布 国产成人一区二区三区小说 | 亚洲欧洲日韩综合 | 日韩av免费 | 亚洲免费砖区 | 青青草一区二区 | 91素人约啪 | 国产www在线| 亚洲激情偷拍 | 日韩久久久久久 | 色欲狠狠躁天天躁无码中文字幕 | 亚州av一区 | 日本一区二区三区久久久久 | 亚洲AV无码成人精品区麻豆 |