作業系統 用命名管道實現乙個簡單的檔案拷貝

2021-08-18 15:12:01 字數 1543 閱讀 1556

【作業系統】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...