【作業系統】linux下程序間通訊實現–匿名管道(pipe),命名管道(fifo)
程式原始碼:
file2fifo.c : (讀取檔案abc,寫入命名管道)
#include
#include
#include
#include
#include
#include
int main(int argc,char *argv)
//寫端
int outfd;
outfd = open("tp",o_wronly);
if(-1 == outfd)
char buf[1024];
int n;
while((n = read(infd,buf,1024)) > 0)
//關閉讀端寫端
close(infd);
close(outfd);
return
0;}
fifo2file.c : (讀取管道,寫入目標檔案abc.bak)
#include
#include
#include
#include
#include
#include
int main(int argc,char *argv)
//讀端
int infd;
infd = open("tp",o_rdonly);
if(-1 == infd)
char buf[1024];
int n;
//將從管道中讀取到的資料寫入檔案abc.bak中
while((n = read(infd,buf,1024))>0)
close(infd);
close(outfd);
unlink("tp");
return
0;}
makefile:
.phony:all
all:fifo2file file2fifo
fifo2file:fifo2file.c
gcc -o $@ $^
file2fifo:file2fifo.c
gcc -o $@ $^
.phony:clean
clean:
rm -f fifo2file file2fifo
程式執行結果:
首先執行file2fifo,將檔案abc中的內容讀取到管道中,然後進行程序等待:
然後執行fifo2file,將管道中的資料寫入目標檔案abc.bak中,從而實現檔案的拷貝:
乙個簡單的作業系統
電腦上電後,bios在自檢後會根據使用者指定的裝置啟動作業系統。假設我們指定軟盤為啟動盤,bios會把軟盤的第乙個扇區 512位元組 讀取到記憶體的0x7c00處,如果這個扇區的最後兩個位元組為0xaa55,bios會跳轉到0x7c00處開始執行。我們可以利用這樣乙個過程做乙個簡單的作業系統。我們的...
乙個簡單的51作業系統
os cfg.h include reg51.h define time per sec 200 定義任務時鐘頻率,200hz define clock 22118400 定義時鐘晶振,單位hz define max task 4 定義任務數量 函式變數宣告,在需要用以下函式或變數的檔案中包含此檔案...
乙個作業系統的實現 2
接上文 xiongjian 2010.12.22 msn cug live.cn 10 下面開始程序,首先引入幾個基本原則 1 程序表a用來儲存程序a的資訊和程序a切換時,儲存當前a執行時暫存器資訊。定義為 processproc table 1024 表示系統最多可以有1024個程序,proces...