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);
}
}
}
擴展鏈接
[apue] 使用文件記錄鎖無法實現父子進程交互執行同步
父子進程間交互執行是指用一種同步原語,實現父進程和子進程在某一時刻只有一個進程執行,之后由另外一個進程執行,用一段代碼舉例如下: 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 等進行.比如一個程序已經死掉 ...
[置頂] 簡單解析linux下進程通信方法
linux下的進程通信手段基本上是從Unix平臺上的進程通信手段繼承而來的.而對Unix發展做出重大貢獻的兩大主力AT&T的貝爾實驗室及BSD(加州大學伯克利分校的伯克利軟件發布中心)在進程間 ...
【Linux 進程】fork父子進程間共享數據分析
之前我們通過fork()函數,得知了父子進程之間的存在著代碼的拷貝,且父子進程都相互獨立執行,那么父子進程是否共享同一段數據,即是否存在著數據共享.接下來我們就來分析分析父子進程是否存在著數據共享. ...
【Linux 進程】之關于父子進程之間的數據共享分析
之前我們通過fork()函數,得知了父子進程之間的存在著代碼的拷貝,且父子進程都相互獨立執行,那么父子進程是否共享同一段數據,即是否存在著數據共享.接下來我們就來分析分析父子進程是否存在著數據共享. ...
linux進程通信之使用匿名管道進行父子進程通信
管道:是指用于連接一個讀進程和一個寫進程,以實現它們之間通信的共享文件,又稱pipe文件. 管道是單向的.先進先出的.無結構的.固定大小的字節流,它把一個進程的標準輸出和另一個進程的標準輸入連接在一起 ...
LINUX編程學習筆記(十四) 創建進程與 父子進程內存空間
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-父子进程的简单同步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 虚拟机安装图形界面,linu
- 下一篇: 中柏ezpadE7装linux,中柏EZ