Linux系統編程_6_進程環境(C程式典型的儲存空間)

來源:互聯網
上載者:User

標籤:linux編程

1.八種結束Linux進程的方法:

五種正常終止方式:

   main函數返回;

   調用exit;

   調用_exit或_Exit

   最後一個線程從其啟動常式返回

   最後一個線程調用pthread_exit

三種異常終止方式:

   調用abort;

   接收到一個訊號終止;

   最後一個線程對取消請求做出響應;


      exit函數與_exit  _Exit函數的區別是exit函數在結束進程之前會調用各種終止處理常式,關閉所有IO流,這會造成所有緩衝中的資料被沖洗(寫到磁碟檔案);

      atexit(void (*fun)void)函數,用來給進程註冊函數,退出時會執行註冊過的函數,註冊幾次會調用幾次;


2.命令列參數與環境表:

extern char **environ;  //每個程式都會有一張環境表,與參數表一樣,環境表也是一個字元指標數組,其中每個指標以NULL(\0)結束;

全域變數environ指向了該環境表的首地址;

#include <stdio.h>int main(int argc, char **argv, char **env){    int i;    printf("================Argv Pram===================\n");    for(i=0; i<argc; i++)    {        printf("argc[%d]= %s\n", i, argv[i]);    }    printf("\n=============Environment Pram==============\n");    for(; *env != NULL; env++)    {        printf("%s\n", *env);    }    return 0;}

執行結果:

================Argv Pram===================
argc[0]= ./main


=============Environment Pram==============
HOSTNAME=150
SELINUX_ROLE_REQUESTED=
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.0.88 12069 22

(......)

3. C程式典型的儲存空間

C程式典型的儲存空間如下:


        對於X86處理器的Linux上,本文段從0x08048000單元開始,棧底則在0xc0000000之下開始,堆頂和棧底之間未使用的空間很大。

注意:未初始化的bss段並不存放在磁碟上的程式檔案中,原因是核心在程式開始運行前都將它們設定為0,需要存放在程式檔案中的段只有本文段和初始化資料區段。



Linux系統編程_6_進程環境(C程式典型的儲存空間)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.