第7章 進程環境

來源:互聯網
上載者:User

標籤:style   blog   http   io   color   ar   使用   sp   strong   

  • main函數
main函數之前會有一個特殊的啟動程式,啟動常式從核心取得命令列參數和環境變數。
  • 進程終止
正常終止:
  1. 從main函數返回
  2. 調用exit
  3. 調用_exit或_Exit
  4. 最後一個線程從啟動常式返回
  5. 最後一個線程調用pthread_exit
異常終止:
  1. 調用abort
  2. 接到一個訊號終止
  3. 最後一個線程對取消請求作出相應
exit函數
_exit和_Exit直接進入核心,exit則先執行一系列清理處理(調用終止處理常式,關閉所有標準io流),然後進入核心
#include<stdlib.h>
void exit(int status);
void _Exit(int status);
#include<unistd.h>
void _exit(int status);
status 終止狀態
atexit函數
登記函數
#include<stdlib.h>int atexit(void (*func)(void));exit調用這些函數的順序與它們登記的順序相反,登記多次也將執行多次
  • 命令列參數
調用exec的進程可將命令列參數傳遞給該新程式。
  • 環境表
extern char **environ;
  • C程式的儲存空間布局
本文段:cpu執行的機器指令部分。可共用初始化資料區段:明確的賦初值的變數。非初始化資料區段:bss段,任何程式外的C聲明棧:自動變數以及每次函數調用時需要儲存的資訊堆:動態儲存裝置的分配size命令報告報告本文段/資料區段/bss段
  • 共用庫
動態連結
  • 儲存空間分配
#include<stdlib.h>void *malloc(size_t size);void *calloc(size_t nobj,size_t size);void *realloc(void *ptr,size_t newsize);void free(void *ptr);
  • 環境變數
#include<stdlib.h>char *getenv(const char *name);應使用geienv函數擷取指點環境變數的值,而不是直接使用environ。設定環境變數時只會影響當前進程及調用的子進程的環境,但不影響父進程的環境。#include <stdlib.h>int putenv(char *str);int setenv(const char* name,const char *value,int rewrite);int unsetenv(const char *name); putenv將字串直接放到環境表中,如果是自動變數會出現錯誤,setenv分配儲存區
  1. 修改現有的name
    • 如果新的value比原來的短或者相等,可以直接放到原來的儲存區
    • 如果長,就需要malloc新的儲存區
  2. 增加新的name
    • 如果是第一次,則需要分配新的環境表格儲存體區,然後分配新的字串儲存區
    • 如果不是第一次了,就realloc環境表的儲存區,然後直接分配新的字串儲存區就可以了。
  • setjmp和longjmp函數
goto是不能跨越函數的,只能在函數內部蹦達#include<setjmp.h>int setjmp(jmp_buf env);void longjmp(jmp_buf env,int val);首先,用setjmp定位要跳到什麼地方,setjmp返回的是longjmp第二個參數指定的數值,可以用來指定跳轉意圖。env一般聲明為全域變數,儲存調用longjmp時能用來恢複棧狀態的所有資訊。
  • getrlinmit和setrlimit函數

第7章 進程環境

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.