示例**
#
include
#include
#include
intmain()
else
if(pid==0)
return0;
}
#
include
#include
#include
intmain()
else
if(pid==0)
printf
("%d\n"
,data)
;return0;
}
執行結果return fork:57080
57079
10return fork:0
57080
110父程序建立子程序後,由於子程序是父程序的副本,所以在子程序中修改data的值並不影響父程序中的data。
函式原型:
intwait
(int
* wstatus)
;wait函式會將子程序的退出狀態記錄在status中,
使用wexitstatus
(wstatus)巨集來解析wstatus的值
引數
功能wnohang
若pid指定的子程序沒有結束,則waitpid()函式返回0,不予以等待。若結束,則返回該子程序的id。
wuntraced
若子程序進入暫停狀態,則馬上返回,但子程序的結束狀態不予以理會。
wcontinued
將呼叫此函式的程序掛起,等待乙個程序的終止或乙個結束的程序收到sigcont訊號時重新開始執行。
以execl為例:#
include
#include
#include
intmain()
printf
("after execl!\n");
return0;
}
#include
intmain()
execvp:
#
include
#include
#include
intmain()
;printf
("before execl\n");
if(execvp
("pwd"
,ar**)==-
1)printf
("after execl!\n");
return0;
}
函式原始碼:
int
system
(const
char
* cmdstring)if(
(pid =
fork()
)<0)
else
if(pid ==0)
else}}
return status;
}
file *
popen
(const
char
* command ,
const
char
* type )
;int
pclose
( file * stream );//用來關閉開啟的stream流;
示例**:
#
include
#include
#include
#include
#define
bufsize
128int
main()
// 關閉檔案流
pclose
(read_fp)
;pclose
(write_fp)
;exit
(exit_success);}
exit
(exit_failure)
;}
程序相關API
1 每個程序都有一張私有的控制代碼表,系統有一張全域性控制代碼表 2 程序id在所有程序都有意義 演示 3 此 開啟乙個軟體,並列印程序id和控制代碼 include stdafx.h include windows.h 開啟子程序函式 bool createprocess ptchar route...
LINUX系統程序相關的API
在linux系統下可以用ps指令來檢視系統的程序 在實際工作中經常使用 ps aux gep 程式名,就可以檢視目標程式的程序。也可以用top指令檢視,相當於windows系統下的任務管理器。每個程序都有自己的程序 用getpid函式可以獲取當前經常的程序號 include include incl...
Win32 程序相關的API
開啟程序控制代碼 通過程序id 開啟模組控制代碼 基址 根據程序控制代碼 模組名 獲取模組的檔案全路徑 根據程序控制代碼 模組控制代碼 獲取模組的檔名 根據程序控制代碼 模組控制代碼 獲取模組的映象大小 入口位址 通過程序控制代碼 模組起始位址 讀取程序的記憶體 獲取程序的所有模組的控制代碼 inc...