2019-10-28

exec函數(shù)族

exec系統(tǒng)調(diào)用:可以把當(dāng)前進(jìn)程替換為一個(gè)新進(jìn)程,并轉(zhuǎn)換到調(diào)用進(jìn)程的內(nèi)存空間
execl、execlp
舉例子:

#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
int main(int argc,char *argv[]){
    pid_t ret;
    ret = fork();
    if(ret == 0 ){
    //  execlp("ls","ls","-l","-h",NULL);
        execl("../demo1025/sys-fork","./sys-fork",NULL);
        perror("execlp error");
        printf("i am child");
    }
    if(ret >0){
        sleep(2);
        printf("i am parent");}
    if(-1 == ret ){
        perror("error");
    }
}

小問題:

my_execlp.c: 在函數(shù)‘main’中:
my_execlp.c:14: 警告:隱式聲明與內(nèi)建函數(shù)‘exit’不兼容
my_execlp.c:22: 警告:隱式聲明與內(nèi)建函數(shù)‘exit’不兼容

解決方式:手動(dòng)添加函數(shù)聲明void exit(int);
默認(rèn)的隱式聲明int exit(int);
孤兒進(jìn)程

父進(jìn)程結(jié)束了肥哎,而子進(jìn)程依然存在葫笼,那么子進(jìn)程成為了孤兒進(jìn)程,由init進(jìn)程接收础废。

僵尸進(jìn)程

當(dāng)一個(gè)子進(jìn)程結(jié)束運(yùn)行的時(shí)候汛骂,它與其父進(jìn)程之間的關(guān)聯(lián)還會(huì)保持到父進(jìn)程也正常地結(jié)束運(yùn)行或者父進(jìn)程調(diào)用了wait才告終止,稱之為僵尸進(jìn)程评腺。

回收子進(jìn)程

wait
1帘瞭、使父進(jìn)程阻塞等待
2、返回結(jié)束的子進(jìn)程的pid
3蒿讥、通過status能夠獲取子進(jìn)程結(jié)束的狀態(tài)蝶念。
waitpid

#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>

int main(int argc,char *agrv[]){
    pid_t pid_ret1,pid_ret2;
    int i=0;
    int status;
    for(;i<5;i++){
        pid_ret1 = fork();
        if(pid_ret1 == 0){
            printf("times = %d pid = %d\n",i,getpid());
            break;
        }
        //pid_ret2 = wait(&status);
        pid_ret2 = waitpid(-1,&status,WNOHANG);
        printf("waitpid = %d\n",pid_ret2);
        
        if(WIFEXITED(status)){
            printf("returns the exit status of the  child\n");
        }
    }   
}

進(jìn)程間通信IPC

四種:
管道pipe、fifo
特點(diǎn):偽文件芋绸,內(nèi)核當(dāng)中的一個(gè)緩沖區(qū)
應(yīng)用在有血緣關(guān)系的進(jìn)程間媒殉。
本質(zhì)上是一個(gè)隊(duì)列,循環(huán)隊(duì)列摔敛。

局限性:
1廷蓉、一端充當(dāng)讀端,一端充當(dāng)?shù)膶懚?br> 2马昙、不能反復(fù)讀取
3苦酱、雙向半雙工

pipe讀和寫的特點(diǎn)
寫端:
1售貌、所有讀端全部關(guān)閉,異常終止
2、有讀端疫萤,
管道已滿 阻塞等待
未滿颂跨,返回實(shí)際的字節(jié)數(shù)。
讀端:
1扯饶、管道有數(shù)據(jù)恒削,返回實(shí)際讀到的字節(jié)數(shù)
2、管道無數(shù)據(jù)尾序,
無寫端 返回0
有寫端 阻塞
練習(xí):
子進(jìn)程中實(shí)現(xiàn)ls 父進(jìn)程中實(shí)現(xiàn)wc -l

#include <stdio.h>
#include <unistd.h>

void exit(int);
int main(int argc,char *agrv[]){
    pid_t pid_ret1;
    int i=0;
    int fd[2];
    char buff[]="hello";
    char buff1[6];
    int ret = pipe(fd);
    if(-1 == ret)
    {
        perror("pipe failed");
        exit(1);
    }
    pid_ret1 = fork();
    if(-1 == pid_ret1){
        perror("fork failed!");
        exit(1);
    }
    //寫端 ls
    if(0 ==  pid_ret1){
        close(fd[0]);
        dup2(fd[1],STDOUT_FILENO);
        //execlp
        execlp("ls","ls",NULL);
        close(fd[1]);
        printf("child\n");
    }
    //讀段  wc -l
    if(pid_ret1 >0)
    {
        close(fd[1]);
        sleep(1);
        dup2(fd[0],STDIN_FILENO);
//重定向钓丰,將原本對(duì)標(biāo)準(zhǔn)輸入操作重定向?yàn)閒d[0]
        printf("************");
        execlp("wc","wc","-l",NULL);
//執(zhí)行wc -l的功能,不再從標(biāo)準(zhǔn)輸入讀取每币,而是從fd[0]讀取了
//注意:dup2必須先于execlp執(zhí)行携丁,否則沒有重定向的時(shí)機(jī)了。

        close(fd[0]);       
        printf("parent\n");
    }       
}

練習(xí):
2個(gè)兄弟進(jìn)程間實(shí)現(xiàn)ls |wc -l
父進(jìn)程回收子進(jìn)程ID


共享內(nèi)存
信號(hào):開銷小
socket通信 :比較穩(wěn)定的
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末兰怠,一起剝皮案震驚了整個(gè)濱河市梦鉴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌揭保,老刑警劉巖肥橙,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異秸侣,居然都是意外死亡存筏,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門味榛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來椭坚,“玉大人,你說我怎么就攤上這事搏色∩凭ィ” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵继榆,是天一觀的道長巾表。 經(jīng)常有香客問我汁掠,道長略吨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任考阱,我火速辦了婚禮翠忠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘乞榨。我一直安慰自己秽之,他們只是感情好当娱,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著考榨,像睡著了一般跨细。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上河质,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天冀惭,我揣著相機(jī)與錄音,去河邊找鬼掀鹅。 笑死散休,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的乐尊。 我是一名探鬼主播戚丸,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼扔嵌!你這毒婦竟也來了限府?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤对人,失蹤者是張志新(化名)和其女友劉穎谣殊,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體牺弄,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡姻几,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了势告。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛇捌。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖咱台,靈堂內(nèi)的尸體忽然破棺而出络拌,到底是詐尸還是另有隱情,我是刑警寧澤回溺,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布春贸,位于F島的核電站,受9級(jí)特大地震影響遗遵,放射性物質(zhì)發(fā)生泄漏萍恕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一车要、第九天 我趴在偏房一處隱蔽的房頂上張望允粤。 院中可真熱鬧,春花似錦、人聲如沸类垫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悉患。三九已至残家,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間售躁,已是汗流浹背跪削。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留迂求,地道東北人碾盐。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像揩局,于是被迫代替她去往敵國和親毫玖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1.1網(wǎng)站的組成 網(wǎng)站應(yīng)用程序主要分為:客戶端凌盯、服務(wù)器端 客戶端:瀏覽器中運(yùn)行的部分付枫,用戶能看到并與之交互的界面程...
    Yans19閱讀 223評(píng)論 0 0
  • 今天學(xué)習(xí)了浮動(dòng)float的用法: 1.浮動(dòng)float控制 (1)該屬性可以使元素脫離文檔流,在父容器中進(jìn)行浮動(dòng)驰怎,停...
    小何呵嘿嚯閱讀 96評(píng)論 0 0
  • 2019年10月28日007第42周阐滩,2019年第39次作業(yè)宦搬,總第105篇逾滥。 很長時(shí)間沒有打開“理財(cái)”總結(jié)的文檔了...
    老齊007閱讀 200評(píng)論 1 1
  • 工作已經(jīng)步入正軌,我也已經(jīng)漸漸地適應(yīng)了新學(xué)期的生活熟丸≈⑿樱總體來說装获,這兩天我還是給自己未來一年的職業(yè)規(guī)劃起了一個(gè)很好的榜...
    悼紅軒軒閱讀 522評(píng)論 0 0
  • 365日更第44天逼友。 個(gè)人品牌5步:定位精肃、理論、價(jià)值帜乞、傳播司抱、變現(xiàn)。 這兩天我被動(dòng)加好友100+人挖函,怎么做到的最后再...
    小青小青呀閱讀 3,317評(píng)論 6 59