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

歡迎訪問 生活随笔!

生活随笔

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

linux

linux父子进程同步实验,Linux-父子进程的简单同步

發布時間:2024/10/14 linux 92 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux父子进程同步实验,Linux-父子进程的简单同步 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

int fork()

功能:創建一個子進程

返回值:0-創建成功,-1-創建進程失敗,>0-創建進程成功,返回返回子進程id

int wait(int * status)

功能:將調用的進程掛起,等待子進程運行結束

參數:指向整數的指針,0-子進程正常結束,非0-出現運行有誤

返回值:調用正常-子進程id,調用進程無子進程-調用失敗,返回-1

int exit()

功能:終止進程的執行

返回值:無

sleep(n)

功能:進程隨眠1秒

參數:n-隨眠時間

實例代碼

1.1 父進程創建子進程,分別循環輸出"I am parent."和"I am child."5次,每次輸出一次后使用sleep(1)延時1s。

#include

#include

/*

1_1.c

父進程創建子進程,分別循環輸出

"I am child."和"I am parent."

每輸出一次隨眠1s。

*/

main()

{

int p;

while((p=fork())==-1);

if(p==0)

{/*子進程塊*/

int i;

for(i=0;i<5;i++)

{

printf("I am child.\n");

sleep(1);

}

}

else

{/*父進程塊*/

int i;

for(i=0;i<5;i++)

{

printf("I am parent.\n");

sleep(1);

}

}

}

1.2 在1.1的基礎上利用exit()和wait()實現父子進程間的同步。

#include

#include

#include

/*

簡單的進程同步:

父進程等待子進程輸出后再輸出

*/

main()

{

int p;

while((p=fork())==-1);

if(p==0)

{/*子進程塊*/

int i;

for(i=0;i<5;i++)

{

printf("I am child.\n");

sleep(1);

}

exit(0);

}

else

{/*父進程塊*/

int i;

for(i=0;i<5;i++)

{

wait(0);

printf("I am parent.\n");

sleep(1);

}

}

}

擴展鏈接

&lbrack;apue&rsqb; 使用文件記錄鎖無法實現父子進程交互執行同步

父子進程間交互執行是指用一種同步原語,實現父進程和子進程在某一時刻只有一個進程執行,之后由另外一個進程執行,用一段代碼舉例如下: SYNC_INIT(); , counter=; pid_t pid ...

linux父子進程問題

今天遇到一個linux進程啟動時指定Max open files不對的問題,導致程序建立socket異常,進而導致fullgc問題,影響正常服務.所以順帶又溫習了下linux下的父子進程的特性. 孤兒 ...

Linux 父子進程實現復制文件內容到另一個文件內

1. 子進程先拷貝前一半 ,父進程一直阻塞到子進程拷貝完再拷貝后一半 /* 子進程先拷貝前一半文件,父進程先阻塞等待子進程拷貝完前一半內容, * 然后父進程在拷貝,后一半內容 * */ #includ ...

linux殺死進程的簡單講解

一. 終止進程的工具kill .killall.pkill.xkill 終止一個進程或終止一個正在運行的程序,一般是通過kill .killall.pkill.xkill 等進行.比如一個程序已經死掉 ...

&lbrack;置頂&rsqb; 簡單解析linux下進程通信方法

linux下的進程通信手段基本上是從Unix平臺上的進程通信手段繼承而來的.而對Unix發展做出重大貢獻的兩大主力AT&T的貝爾實驗室及BSD(加州大學伯克利分校的伯克利軟件發布中心)在進程間 ...

【Linux 進程】fork父子進程間共享數據分析

之前我們通過fork()函數,得知了父子進程之間的存在著代碼的拷貝,且父子進程都相互獨立執行,那么父子進程是否共享同一段數據,即是否存在著數據共享.接下來我們就來分析分析父子進程是否存在著數據共享. ...

【Linux 進程】之關于父子進程之間的數據共享分析

之前我們通過fork()函數,得知了父子進程之間的存在著代碼的拷貝,且父子進程都相互獨立執行,那么父子進程是否共享同一段數據,即是否存在著數據共享.接下來我們就來分析分析父子進程是否存在著數據共享. ...

linux進程通信之使用匿名管道進行父子進程通信

管道:是指用于連接一個讀進程和一個寫進程,以實現它們之間通信的共享文件,又稱pipe文件. 管道是單向的.先進先出的.無結構的.固定大小的字節流,它把一個進程的標準輸出和另一個進程的標準輸入連接在一起 ...

LINUX編程學習筆記&lpar;十四&rpar; 創建進程與 父子進程內存空間

1什么是進程:進程是一個執行中的程序 執行的程序: 代碼->資源->CPU 進程有很多數據維護:進程狀態/進程屬性 所有進程屬性采用的一個樹形結構體維護 ps ?-a//所有進程 ps - ...

隨機推薦

MyIsam和InnoDB的區別

個人見解: 1.最主要的差別就是Innodb 支持事務處理與外鍵和行級鎖.而MyISAM不支持 所以有用到事務處理和外鍵的,要用Innodb 2.?InnoDB 中不保存表的具體行數,也就是說,執行s ...

while do while 區別

一.while語句的一般形式為:while(表達式)語句其中表達式是循環條件,語句為循環體.while語句的語義是:計算表達式的值,當值為真(非0)時, 執行循環體語句. int i=10; whil ...

Git add 常見用法

Git add ? git add [參數] ?[--] //作用就是將我們需要提交的代碼從工作區添加到暫存區,就是告訴git系統,我們要提交哪些文件,之后就可以使用gi ...

Awk by Example--轉載

總結

以上是生活随笔為你收集整理的linux父子进程同步实验,Linux-父子进程的简单同步的全部內容,希望文章能夠幫你解決所遇到的問題。

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