fork()應該是Linux操作系統的函數。
創新互聯公司作為成都網站建設公司,專注重慶網站建設公司、網站設計,有關成都定制網頁設計方案、改版、費用等問題,行業涉及成都酒店設計等多個領域,已為上千家企業服務,得到了客戶的尊重與認可。
從#include sys/signal.h和fork()上判斷,笑畢絕這個程序應該是Linux操作系統的碰姿應用程序。
Windows上應該用CreateProcess創建進程
獲取進程ID用
DWORD GetWindowThreadProcessld(HWND hwnd,LPDWORD lpdwProcessld)
hWnd:窗口句柄。
lpdwProcessld:接收進程標數脊識的32位值的地址。如果這個參數不為NULL,GetWindwThreadProcessld將進程標識拷貝到這個32位值中,否則不拷貝。
返回值:返回值為創建窗口的線程標識。
/*請解釋一下*/
while(((child=wait(status))==-1)(errno==EINTR));
這種的目的是父親進程等待子進程結束,并枯困回收子進程的資源,將子進程的退出狀態存儲在status中,同時,返回該子進程的pid。
如果wait函數返回-1表示wait函數被其它情況打斷返回,并沒有等待到子進程結束,而同時判斷errno的值是不是EINTR(意思是讓你try again),那么,讓進程繼續等待。因為這個錯誤并不是真正wait錯誤,而是被timeout時碼桐間等造成的,因此重新等待。而如果是其它情況,顯然是wait函數調用錯誤,即下面的if(child==-1),需要打印錯誤信息。‘
//但你這句應該寫錯了。應該是邏輯與而不是位與操作。即
while(((child=wait(status))==-1)(errno==EINTR));
/*請解釋一遲敗坦下*/
if(child==-1)
你對信號處理部分還需要努力。
另外介紹一本書《Linux高級程序設計 第3版》 上面講得很清楚。
有問題我們繼續交流,一起學習。
更多技術文章可以關注我的微博,名字:成都睿爾科技 。
所在函數庫為stdlib.h、process.h
void abort() 此函數通過調用具有出口代碼3的_exit寫一個終止信息于
stderr,并異常終止程序 無返回值
int exec…裝入和運行其它程序
int execl( char *pathname,char *arg0,char *arg1,…,char *argn,NULL)
int execle( char *pathname,char *arg0,char *arg1,…,
char *argn,NULL,char *envp[])
int execlp( char *pathname,char *arg0,char *arg1,…,NULL)
int execlpe(char *pathname,char *arg0,char *arg1,…,NULL,char *envp[])
int execv( char *pathname,char *argv[])
int execve( char *pathname,char *argv[],char *envp[])
int execvp( char *pathname,char *argv[])
int execvpe(char *pathname,char *argv[],char *envp[])
exec函數族裝入并運行程序pathname,并將參數
arg0(arg1,arg2,argv[],envp[])傳遞給子程序,出錯返回-1
在exec函數族中,后綴l、v、p、e添加到exec后,
所指定的函數將具有某種操作能力
有后綴 p時,函數可以利用DOS的PATH變量查找子程序文件
l時,函數中被傳遞的參數個數固定
v時,函數中被傳遞的參數個數不固定
e時,函數傳遞指定參數envp,允許改變子進程的環境,
無后綴e時,弊差斗子進程使租磨用當前程序的環境
void _exit(int status)終止當前程序,但不清理現場
void exit(int status) 終止當前程序,關閉所有文件,寫緩沖區的輸出(等待輸出),
并調用任何寄存器的出口函數,無返回值
int spawn…運行子程序
int spawnl( int mode,char *pathname,char *arg0,char *arg1,…,
char *argn,NULL)
int spawnle( int mode,char *pathname,char *arg0,char *arg1,…,
char *argn,NULL,char *envp[])
int spawnlp( int mode,char *pathname,char *arg0,char *arg1,…,
char *argn,NULL)
int spawnlpe(int mode,char *pathname,char *arg0,char *arg1,…,
char *argn,NULL,char *envp[])
int spawnv( int mode,char *pathname,char *argv[])
int spawnve( int mode,char *pathname,char *argv[],char *envp[])
int spawnvp( int mode,char *pathname,char *argv[])
int spawnvpe(int mode,char *pathname,char *argv[],char *envp[])
spawn函數族在mode模式下運行子程序pathname,并將參數
arg0(arg1,arg2,argv[],envp[])傳遞給子程序.出錯返回-1
mode為運行模式
mode為 P_WAIT 表示在子程序運行慶春完后返回本程序
P_NOWAIT 表示在子程序運行時同時運行本程序(不可用)
P_OVERLAY表示在本程序退出后運行子程序
在spawn函數族中,后綴l、v、p、e添加到spawn后,
所指定的函數將具有某種操作能力
有后綴 p時, 函數利用DOS的PATH查找子程序文件
l時, 函數傳遞的參數個數固定.
v時, 函數傳遞的參數個數不固定.
e時, 指定參數envp可以傳遞給子程序,允許改變子程序運行環境.
當無后綴e時,子程序使用本程序的環境.
int system(char *command) 將MSDOS命令command傳遞給DOS執行
轉換子程序,函數庫為math.h、stdlib.h、ctype.h、float.h
char *ecvt(double value,int ndigit,int *decpt,int *sign)
將浮點數value轉換成字符串并返回該字符串
char *fcvt(double value,int ndigit,int *decpt,int *sign)
將浮點數value轉換成字符串并返回該字符串
char *gcvt(double value,int ndigit,char *buf)
將數value轉換成字符串并存于buf中,并返回buf的指針
char *ultoa(unsigned long value,char *string,int radix)
將無符號整型數value轉換成字符串并返回該字符串,radix為轉換時所用基數
char *ltoa(long value,char *string,int radix)
將長整型數value轉換成字符串并返回該字符串,radix為轉換時所用基數
char *itoa(int value,char *string,int radix)
將整數value轉換成字符串存入string,radix為轉換時所用基數
double atof(char *nptr) 將字符串nptr轉換成雙精度數,并返回這個數,錯誤返回0
int atoi(char *nptr) 將字符串nptr轉換成整型數, 并返回這個數,錯誤返回0
long atol(char *nptr) 將字符串nptr轉換成長整型數,并返回這個數,錯誤返回0
double strtod(char *str,char **endptr)將字符串str轉換成雙精度數,并返回這個數,
long strtol(char *str,char **endptr,int base)將字符串str轉換成長整型數,
并返回這個數,
int toascii(int c) 返回c相應的ASCII
int tolower(int ch) 若ch是大寫字母('A'-'Z')返回相應的小寫字母('a'-'z')
int _tolower(int ch) 返回ch相應的小寫字母('a'-'z')
int toupper(int ch) 若ch是小寫字母('a'-'z')返回相應的大寫字母('A'-'Z')
int _toupper(int ch) 返回ch相應的大寫字母('A'-'Z')
#include windows.h
BOOL CreateProcess
(
LPCTSTRlpApplicationName,
LPTSTRlpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes。
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCTSTR lpCurrentDirectory,
LPSTARTUPINFO lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation
);
詳見百度百科
名稱欄目:c語言進程創建的函數代碼 c語言進程創建的函數代碼是什么
轉載注明:http://vcdvsql.cn/article24/ddpcpje.html
成都網站建設公司_創新互聯,為您提供Google、企業網站制作、網站內鏈、網站策劃、做網站、標簽優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯