第七章 進程環境

來源:互聯網
上載者:User

1.exit函數

#include <stdlib.h>

void exit(int status)

void _Exit(int status)

#include <unistd.h>

void _exit(int status)


exit(0)與return(0)等價

2.atexit(void (*func)(void));

向進程註冊函數

7.4命令列參數

argv[argc]是一個null 指標。

7.5環境表

extern char **environ;

7.6C程式的儲存空間布局

使用size 可查看程式的大小

7.7共用庫

gcc -static test.c -o test

gcc -o test test.c

7.8儲存空間分配

#include <stdlib.h>

void *malloc(size_t size);//分配的空間不初始化

void *calloc(size_t size);//分配的空間初始化為0

void *realloc(void *ptr,size_t newsize);

注意:大多是實現分配的儲存空間比所要求的要稍大一些,額外的空間用來記錄管理資訊

不能釋放已經釋放了的塊。

7.9環境變數

#include <stdlib.h>

取環境變數

char *getenv(const char *name);

int putenv(char *str);//取name = value的字串,將其放到環境表中

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

int unsetenv(const char *name);

7.10 setjmp和longjmp

#include <setjmp.h>

int setjmp(jmp_buf env);


void longjmp(jmp_buf env,int val);


jmp_buf jmpbuffer;

不想讓值復原,可以用volatile,聲明為全域或靜態變數的值在執行longjmp時保持不變。


7.11 getrlimit和setrlimit函數

#include <sys/resource.h>

int getrlimit(int resource,struct rlimit *rlptr);

int setrlimit(int resource,struct rlimit *rlptr);


struct rlimit {

rlim_t rlim_cur;

rlim_t rlim_max;

}


聯繫我們

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