(1)getpid和getppid函式可獲得當前程序的pid和ppid,呼叫方式如下:
#include
#include
#include
intmain()
(2)利用fork()函式建立子程序,該子程序為父程序的乙個複製品,呼叫方式如下:
#include
#include
#include
#include
intmain
(void
)else
if(result ==0)
else
}
(3)利用execle()函式使用檔名的方式查詢可執行檔案,呼叫方式如下:
#include
#include
#include
intmain()
}
(4)用來終止程序的exit()函式和_exit()函式
exit()函式:
#include
#include
intmain()
_exit()函式:
#include
#include
intmain()
(5)使父程序阻塞的waitpid()函式
#include
#include
#include
#include
#include
intmain()
else
}while
(pr ==0)
;if(pr == pc)
else
printf
("some error occured.\n");
}}
(6)建立守護程序例項
#include
#include
#include
#include
#include
#include
#include
#define maxfile 65535
intmain()
else
if(pc>0)
exit(0
);setsid()
;chdir
("/");
umash(0
);for(i=
0;i)while(1
)write
(fd,buf,len+1)
;close
(fd)
;sleep(10
);}}
(1)編寫多程序程式
該實驗有3個程序,其中乙個為父程序,其餘為子程序,其中乙個子程序執行「ls -l"命令,另乙個子程序在暫停5s後退出
/*exc.c*/
#include
#include
#include
#include
#include
intmain
(void
)else
if(child1 ==0)
if(child2 ==-1
)else
if(child2 ==0)
else
}while
(child1 ==0)
;if(child1 == child2)
printf
("get child2\n");
else
printf
("error occured!\n");
}}
(2)編寫守護程序
在該實驗中,讀者首先建立起乙個守護程序,然後再新建乙個子程序,子程序暫停10s後,自動退出。
/*exc2.c*/
#include
#include
#include
#include
#include
#include
#define maxfile 65535
intmain
(void
)else
if(child1 >0)
exit(0
);openlog
("exc2_info"
,log_pid, log_daemon)
;setsid()
;chdir
("/");
umask(0
);for(i =
0; i < maxfile; i++
) child2 =
fork()
;if(child2 ==-1
)else
if(child2 ==0)
else
}}
併發程式設計 程序與執行緒
程序即正在執行的乙個過程。程序是對正在執行程式的乙個抽象。程序的概念起源於作業系統,是作業系統最核心的概念,也是作業系統提供的最古老也是最重要的抽象概念之一。作業系統的其他所有內容都是圍繞程序的概念展開的。ps 即使可以利用的cpu只有乙個 早期的計算機確實如此 也能保證支援 偽 併發的能力。將乙個...
一 程序執行緒
1.程序的3種狀態 執行 阻塞 就緒 其中不存在的狀態轉換 阻塞 執行 就緒 阻塞 2.作業系統用於維護程序記錄的結構 程序表或程序控制權 pcb 3.程式使用cpu的3種方式 cpu導向 io導向 平衡型程式 4.程序排程目標 極小化平均時間 級大化系統吞吐量 保持系統各個功能部分均處於繁忙狀態和...
程序與執行緒 一
一 建立程序 在linux系統中,只有fork 系統呼叫能夠建立程序。呼叫fork 函式之後,父程序將暫存器和堆疊內的內容全部賦值給子程序的暫存器和堆疊。fork test.c version 1 created on 2015 5 18 author wangth include include ...