日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux中fork()函数与vfork()函数的区别

發布時間:2025/3/15 linux 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux中fork()函数与vfork()函数的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

對于fork函數:

子進程只繼承父進程的文件描述表,不繼承但共享文件表項和i-node

父進程創建一個子進程之后,文件表項中的引用計數加1變為2,當父進程作close操作之后計數器減1,子進程還是可以使用文件表項,只有計數器減到0的時候才會釋放該文件表項

?

fork函數測試:

#include <unistd.h> #include <stdio.h> #include <sys/types.h> #include <errno.h> #include <stdio.h> #include <fcntl.h> #include <string.h> #include <stdlib.h> #include <sys/stat.h>int glob = 6; /* external variable in initialized data */int main(void) {int var; /* automatic variable on the stack */pid_t pid;var = 88;printf("before vfork\n"); /* we don't flush stdio */FILE *fp = fopen("s.txt", "w");int fd = open("s_fd.txt", O_WRONLY | O_CREAT | O_TRUNC, S_IRWXU | S_IRWXG);char *s = "hello andrew";ssize_t size = strlen(s) * sizeof(char);//標準IO函數帶緩存功能-->全緩存fprintf(fp, "s: %s, pid : %d", s, getpid()); //實際上是先寫到緩存中去的//緩存沒有滿程序沒有結束,信息就會一直停留在緩存中//內核提供的IO系統調用(不帶緩存)write(fd, s, size);//直接寫入文件if ((pid = fork()) < 0) {perror("vfork error");} else if (pid == 0) { /* child */glob++; /* modify parent's variables */var++;//fprintf(fp, "pid = %d, glob = %d, var = %d\n", getpid(), glob, var);// _exit(0); /* child terminates */}else{//父進程}//父子進程都要執行fprintf(fp, "pid = %d, glob = %d, var = %d\n", getpid(), glob, var);//fprintf(fp, "s: %s, pid : %d\n", s, getpid()); close(fp);close(fd);sleep(1); exit(0); }

?測試結果:

使用fork函數的緩存區會復制到子進程中,在父子進程都需要執行

//父子進程都要執行fprintf(fp, "pid = %d, glob = %d, var = %d\n", getpid(), glob, var);

的時候父子進程中都含有上面:

fprintf(fp, "s: %s, pid : %d", s, getpid()); //實際上是先寫到緩存中去的

fp緩存區中的內容,因此在執行的時候父子進程都能將  hello andrew輸出到自己的緩存中去,一旦程序結束父子進程緩存區中的內容都會寫入fp所指向的文件;

?

vfork函數測試:

#include <unistd.h> #include <stdio.h> #include <sys/types.h> #include <errno.h> #include <stdio.h> #include <fcntl.h> #include <string.h> #include <stdlib.h> #include <sys/stat.h>int glob = 6; /* external variable in initialized data */int main(void) {int var; /* automatic variable on the stack */pid_t pid;var = 88;printf("before vfork\n"); /* we don't flush stdio */FILE *fp = fopen("s.txt", "w");int fd = open("s_fd.txt", O_WRONLY | O_CREAT | O_TRUNC, S_IRWXU | S_IRWXG);char *s = "hello andrew";ssize_t size = strlen(s) * sizeof(char);//標準IO函數帶緩存功能-->全緩存fprintf(fp, "s: %s, pid : %d", s, getpid()); //實際上是先寫到緩存中去的//緩存沒有滿程序沒有結束,信息就會一直停留在緩存中//內核提供的IO系統調用(不帶緩存)write(fd, s, size);//直接寫入文件if ((pid = vfork()) < 0) { //注意這里使用的是vfork函數perror("vfork error");} else if (pid == 0) { /* child */glob++; /* modify parent's variables */var++;//fprintf(fp, "pid = %d, glob = %d, var = %d\n", getpid(), glob, var);// _exit(0); /* child terminates */}else{//父進程}//父子進程都要執行fprintf(fp, "pid = %d, glob = %d, var = %d\n", getpid(), glob, var);//fprintf(fp, "s: %s, pid : %d\n", s, getpid()); close(fp);close(fd);sleep(1); exit(0); }

測試結果:

在使用vfork的時候,可以看到,只有一個 hello andrew輸出,因為vfork函數是不為子進程創建單獨的分區的,而是和父進程共用一個,一旦子進程將緩存區中的內容輸出,那么另一位緩存區中也不會在有內容,因為兩者緩存區是相同的;

總結:vfork創建的子進程,子進程會先運行并且,不會復制父進程的內存空間。

總結

以上是生活随笔為你收集整理的linux中fork()函数与vfork()函数的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: a视频在线免费观看 | 国产一区二区毛片 | 亚洲永久免费视频 | 久久久av一区二区三区 | 欧亚一区二区 | 亚洲精品久久久久久一区二区 | 国产亚洲精品成人 | 中国性猛交 | 69福利视频 | 亚洲专区在线视频 | 日本不卡一区二区三区视频 | 95在线视频 | 亚洲一区二区三区在线看 | 色av色 | 欧美日韩激情视频 | 都市激情综合 | 嫩草影院中文字幕 | 国产久久精品 | 韩国伦理在线视频 | 欧美日本韩国一区二区三区 | 毛片你懂的 | 欧美国产日韩综合 | av 日韩 人妻 黑人 综合 无码 | 久久久久亚洲AV成人无码国产 | 亚洲欧洲精品在线 | 免费一级毛片麻豆精品 | va欧美| 中出精品 | 国产在线无 | 欧美高清另类 | 国产吧在线 | 天堂免费在线视频 | 欧美成人手机视频 | 日本中文字幕二区 | 欧美日韩乱| 久久免费av | 一区二区免费在线播放 | 女同动漫免费观看高清完整版在线观看 | av尤物在线 | 在线成人黄色 | 成都4电影免费高清 | 免费看大片a| 人妻 丝袜美腿 中文字幕 | 国产一区二区视频在线观看免费 | 国产中文欧美日韩在线 | 国产日日日 | 亚洲国产中文字幕在线观看 | 日本国产一区二区 | 久久久无码18禁高潮喷水 | 男人天堂av电影 | 欧美日韩小说 | 性日本xxx | 久久免费看视频 | 黄色网址视频在线观看 | 欧美xxxx性xxxxx高清 | 日本50路肥熟bbw | 加勒比av在线播放 | 成人v精品蜜桃久一区 | 污黄网站在线观看 | 午夜精品美女久久久久av福利 | 国产三级漂亮女教师 | 久久大尺度 | 波多野结衣办公室33分钟 | 男男野外做爰全过程69 | 四虎三级 | 亚洲123区 | 浪潮av色 | 欧美成人做爰猛烈床戏 | 久久香蕉综合 | 国产精品三区四区 | 啪啪av网 | 精品自拍av | 污的网站 | 天堂中文字幕免费一区 | 女同视频网站 | 天堂婷婷 | 美女100%露胸无遮挡 | 五月婷婷开心网 | 五月天在线播放 | www.亚洲天堂 | 久久综合91| 国产91免费看 | 884aa四虎影成人精品一区 | 欧美一级成人 | 少妇紧身牛仔裤裤啪啪 | 夜色网 | 久久男人的天堂 | 国产亚洲在线观看 | 超碰影院在线 | 欧美另类在线视频 | 亚洲免费高清视频 | 欧美一区二区高清视频 | 三级黄色在线 | 婷婷日| 日本黄色xxxx| 免费av观看网站 | 国产在线免费av | 日韩视频免费观看高清 | 久久精品久久久精品美女 |