Linux c 程序控制

2021-09-30 18:02:02 字數 3236 閱讀 8818

getpid獲得程序識別碼

表頭檔案:

#include函式原型:

pid_t getpid(void);

返回值:

目前程序的程序識別碼

getppid獲得父程序的程序識別碼

表頭檔案:

include函式原型:

pid_t getppid(void);

返回值:

目前程序的父程序識別碼

fork建立子程序

表頭檔案:

#include#include函式原型:

pid_t fork(void);

函式說明:

子程序獲得父程序的資料空間、堆和棧的副本,父程序並不共享這部分記憶體,

也就是說子程序對父程序的同名變數進行修改並不會影響其在父程序的值

返回值:

一次返回兩個值:

在父程序返回子程序的程序號;

在子程序中返回0,錯誤返回-1;

vfork建立子程序

表頭檔案:

#include函式原型:

pid_t vfork(void);

函式說明:

子程序和父程序共享位址空間,如果子程序修改了某變數將影響到父程序

必須呼叫exit()來結束,否則子程序將不能結束

返回值:

若成功:在父程序返回新建立的子程序的pid,

在子程序中返回0;

若失敗:返回-1,失敗原因存在errno中

exec族exec函式族中,一般是由fork建立子程序後,在子程序中執行,也就是替換子程序中的東西,程序中的空間**完全被新程式代替,但是

呼叫exec程式不會建立新程序,程序id也沒有發生變化

path環境變數:包含了一張目錄表,系統通過path環境變數定義的路徑搜尋執行碼,path環境變數定義時目錄之間需用用「:」分隔,以「.」號表示結束。path環境變數定義在使用者的.profile或.bash_profile中,下面是path環境變數定義的樣例,此path變數指定在「/bin」、「/usr/bin」和當前目錄三個目錄進行搜尋執行碼。

path=/bin:/usr/bin:.

表頭檔案:

#include函式原型:

int execl(const char *path, const char *arg1, ...);

函式引數:

path:被執行程式名,含完整路徑;

arg1 - arg n:被執行程式所需的命令列引數,含程式名。以null( 或(char*)0 )結束

返回值:

如果執行成功不返回;

失敗返回-1, 失敗原因存在errno.

表頭檔案:

#include函式原型:

int execv(const char *path, char *const ar**, ...);

函式引數:

path:被執行程式名,含完整路徑;

ar**:被執行程式所需的命令列引數組

返回值:

如果執行成功不返回;

失敗返回-1, 失敗原因存在errno.

system啟動程序

表頭檔案:

#include函式原型:

int system(const char* string);

wait

表頭檔案:

#include#include函式原型:

pid_t wait(int *status);

函式說明:

在他目前程序的執行直到有訊號來到或者子程序結束;

如果呼叫wait子程序已結束,wait會立即返回子程序結束狀態值;

結束狀態值由status返回,子程序pid也會一塊返回;

如果不在意結束狀態值,status可設null;

返回值:

成功:返回子程序pid;

失敗:返回-1, 失敗原因存於errno;

waitpid

表頭檔案:

#include#include函式原型:

pid_t waitpid(pid_t pid, int *status, int options);

函式說明:

其他參見wait();

pid 0;

options:

0或下面的or組合:

wnohang:如果沒有任何已結束的子程序則馬上返回,不予等待;

wubtraced:如果子程序進入暫停執行則馬上返回,但結束狀態不予理會;

返回值:

成功:返回pid;

失敗:返回-1,失敗原因存於errno

exit

表頭檔案:

#include函式原型:

void exit(int status);

函式說明:

exit(0) 表示程式正常退出,

exit⑴/exit(-1)表示程式異常退出。

_

exit

表頭檔案:

#include函式原型:

void _exit(int status);

exit 和 _exit比較

/*會列印hello world...*/

#include#includeint main()

/*不會列印hello world...*/

#include#includeint main()

/*會列印hello world...*/

#include#includeint main()

Linux C 程序控制

1.程式 程序 程序id pit t型別。2.get pid 取得程序idgetppid 取得父程序id。a getuid geteuid getgid getegid 取得使用者id及組id。3.fork函式建立新的程序。pid tfork void a fork函式不需要引數。b 對於父程序fo...

linux c程式設計 程序控制 四 程序關係

每乙個程序除了有乙個程序id外,還屬於乙個程序組。程序組是乙個或多個程序的集合,通常情況下,他們是在同一作業中結合起來的,同一程序組的個程序接受來自同一終端的各種訊號。每乙個程序組有乙個唯一的程序id。函式getpgrp 返 用程序的程序組id。include pid t getpgrp void ...

LInux C程序控制作業 2

編寫程式實現以下功能 1,在父程序中定義變數n,在子程序中對變數n進行 操作 並且列印變數n的值,列印子程序pid 2,在父程序中列印變數n的值,並且列印父程序pid。3,要求分別用fork和vfork建立子程序。vfork include include include include inclu...