c語言調(diào)用函數(shù)while((p1=fork())==-1)的意思是:
目前創(chuàng)新互聯(lián)已為超過千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、石景山網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
fork函數(shù)是在當(dāng)前進(jìn)程中新建立一個子進(jìn)程,如果這個創(chuàng)建子進(jìn)程失敗,那么返回-1,這個實(shí)際是把創(chuàng)建進(jìn)程的返回值和-1比較看看是否創(chuàng)建失敗顫孫碰。
因?yàn)槭菍懺趙hile語句里,那么當(dāng)創(chuàng)建失敗之后,如果在while里面沒有break或者跳出,當(dāng)while執(zhí)行體執(zhí)行結(jié)束后又會執(zhí)行(p1=fork())==-1,等于不斷重復(fù)創(chuàng)建子進(jìn)程一直到創(chuàng)建成功為止。
注意這里會返回兩次,因?yàn)楦高M(jìn)程創(chuàng)建子進(jìn)程的時候復(fù)制茄談了父進(jìn)程的地址空間,那么父子進(jìn)程地址空間的語句執(zhí)行都在等待fork返回的那句話里。
所以返回兩次是父進(jìn)程返回一個,返回的是子進(jìn)程的ID,子進(jìn)程返回一次,返回的是0.
那么我們凱猛根據(jù)不同的返回值就可以分別寫出我們想要的父子進(jìn)程的邏輯。
所在函數(shù)庫為stdlib.h、process.h
void abort() 此函數(shù)通過調(diào)用具有出口代碼3的_exit寫一個終止信息于
stderr,并異常終止程序 無返回值
int exec…裝入和運(yùn)行其它程序
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函數(shù)族裝入并運(yùn)行程序pathname,并將參數(shù)
arg0(arg1,arg2,argv[],envp[])傳遞給子程序,出錯返回-1
在exec函數(shù)族中,后綴l、v、p、e添加到exec后,
所指定的函數(shù)將具有某種操作能力
有后綴 p時,函數(shù)可以利用DOS的PATH變量查找子程序文件
l時,函數(shù)中被傳遞的參數(shù)個數(shù)固定
v時,函數(shù)中被傳遞的參數(shù)個數(shù)不固定
e時,函數(shù)傳遞指定參數(shù)envp,允許改變子進(jìn)程的環(huán)境,
無后綴e時,弊差斗子進(jìn)程使租磨用當(dāng)前程序的環(huán)境
void _exit(int status)終止當(dāng)前程序,但不清理現(xiàn)場
void exit(int status) 終止當(dāng)前程序,關(guān)閉所有文件,寫緩沖區(qū)的輸出(等待輸出),
并調(diào)用任何寄存器的出口函數(shù),無返回值
int spawn…運(yùn)行子程序
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函數(shù)族在mode模式下運(yùn)行子程序pathname,并將參數(shù)
arg0(arg1,arg2,argv[],envp[])傳遞給子程序.出錯返回-1
mode為運(yùn)行模式
mode為 P_WAIT 表示在子程序運(yùn)行慶春完后返回本程序
P_NOWAIT 表示在子程序運(yùn)行時同時運(yùn)行本程序(不可用)
P_OVERLAY表示在本程序退出后運(yùn)行子程序
在spawn函數(shù)族中,后綴l、v、p、e添加到spawn后,
所指定的函數(shù)將具有某種操作能力
有后綴 p時, 函數(shù)利用DOS的PATH查找子程序文件
l時, 函數(shù)傳遞的參數(shù)個數(shù)固定.
v時, 函數(shù)傳遞的參數(shù)個數(shù)不固定.
e時, 指定參數(shù)envp可以傳遞給子程序,允許改變子程序運(yùn)行環(huán)境.
當(dāng)無后綴e時,子程序使用本程序的環(huán)境.
int system(char *command) 將MSDOS命令command傳遞給DOS執(zhí)行
轉(zhuǎn)換子程序,函數(shù)庫為math.h、stdlib.h、ctype.h、float.h
char *ecvt(double value,int ndigit,int *decpt,int *sign)
將浮點(diǎn)數(shù)value轉(zhuǎn)換成字符串并返回該字符串
char *fcvt(double value,int ndigit,int *decpt,int *sign)
將浮點(diǎn)數(shù)value轉(zhuǎn)換成字符串并返回該字符串
char *gcvt(double value,int ndigit,char *buf)
將數(shù)value轉(zhuǎn)換成字符串并存于buf中,并返回buf的指針
char *ultoa(unsigned long value,char *string,int radix)
將無符號整型數(shù)value轉(zhuǎn)換成字符串并返回該字符串,radix為轉(zhuǎn)換時所用基數(shù)
char *ltoa(long value,char *string,int radix)
將長整型數(shù)value轉(zhuǎn)換成字符串并返回該字符串,radix為轉(zhuǎn)換時所用基數(shù)
char *itoa(int value,char *string,int radix)
將整數(shù)value轉(zhuǎn)換成字符串存入string,radix為轉(zhuǎn)換時所用基數(shù)
double atof(char *nptr) 將字符串nptr轉(zhuǎn)換成雙精度數(shù),并返回這個數(shù),錯誤返回0
int atoi(char *nptr) 將字符串nptr轉(zhuǎn)換成整型數(shù), 并返回這個數(shù),錯誤返回0
long atol(char *nptr) 將字符串nptr轉(zhuǎn)換成長整型數(shù),并返回這個數(shù),錯誤返回0
double strtod(char *str,char **endptr)將字符串str轉(zhuǎn)換成雙精度數(shù),并返回這個數(shù),
long strtol(char *str,char **endptr,int base)將字符串str轉(zhuǎn)換成長整型數(shù),
并返回這個數(shù),
int toascii(int c) 返回c相應(yīng)的ASCII
int tolower(int ch) 若ch是大寫字母('A'-'Z')返回相應(yīng)的小寫字母('a'-'z')
int _tolower(int ch) 返回ch相應(yīng)的小寫字母('a'-'z')
int toupper(int ch) 若ch是小寫字母('a'-'z')返回相應(yīng)的大寫字母('A'-'Z')
int _toupper(int ch) 返回ch相應(yīng)的大寫字母('A'-'Z')
C語言的system函數(shù)調(diào)用如下:
函數(shù)名: system
功 能: 發(fā)出一個DOS命令
用 法: int system(char *command);
system函數(shù)已經(jīng)被收錄在標(biāo)準(zhǔn)c庫中,可以直接調(diào)用
程序例:
#include stdlib.h
#include stdio.h
int main(void)
{
printf("About to spawn command點(diǎn)抗 and run a DOS command\n"仔禪);
system("dir");
return 0;
}
system函數(shù)的輸入值有:
system("pause") 是彈出“按任意鍵繼續(xù)”就是等待用戶卜戚野處理
system("ping 192.168.0.1")/*顯示當(dāng)前系型喊統(tǒng)IP
system("cls");//清屏,等于在DOS上使用cls命令
進(jìn)程間無法設(shè)置吧,函數(shù)調(diào)用都是本進(jìn)程間的,不過進(jìn)程間 通汪歷信是可以的,有些通信是同步的,有歲滾些是異步的。你查乎陵余查手冊,應(yīng)該有滿足你需求的函數(shù)