環境:vmware workstation;centos-6.4-x86_64
程式的實現原理:
在myexecve中得到檔案的描述符,通過execve函式,傳遞檔案的描述符到程式other中,隨後通過程式other替換程式myexecve,最後實現不同程序之間完成共享檔案描述符的操作。步驟:
1、編寫makefile檔案:
3、編寫原始檔other.c:.suffixes:.c .o
cc=gcc
srcs1=main.c
objs1=$(srcs1:.c=.o)
exec1=main
srcs2=other.c
objs2=$(srcs2:.c=.o)
exec2=other
start: $(objs1) $(objs2)
$(cc) -o $(exec1) $(objs1)
$(cc) -o $(exec2) $(objs2)
@echo "-----------------------------ok-----------------------"
.c.o:
$(cc) -wall -o $@ -c $<
clean:
rm -rf $(exec1) $(objs1)
rm -rf $(exec2) $(objs2)
this is some words.
#include #include #include #include int main(int arg, char *args)
4、編寫原始檔main.c:
#include #include #include #include #include #include #include int main(void)
// 定義乙個字元陣列用來儲存檔案描述符
char file_tar[10];
// 初始化字元陣列
memset(file_tar, 0, sizeof(file_tar));
// 將檔案描述符轉成字串
sprintf(file_tar, "%d", fd);
// 定義乙個字元指標陣列,作為execve函式的引數
// 設定字元指標陣列的第乙個引數是程式的名字
// 設定字元指標陣列的第二個引數是檔案操作符
// 設定字元指標陣列的第三個引數是null
char *char_str[3] = ;
// 通過函式execve呼叫程式other
execve("other", char_str, null);
// 關閉檔案描述符
close(fd);
return 0;
}
5、編譯並執行程式:
[negivup@negivup mycode]$ make
gcc -wall -o main.o -c main.c
gcc -wall -o other.o -c other.c
gcc -o main main.o
gcc -o other other.o
-----------------------------ok-----------------------
[negivup@negivup mycode]$ ./main
this is some words.
可以從程式的執行效果中看出,兩個程序之間共享了檔案描述符。
不同進製間的轉換
1 其他進製到十進位制 係數 就是每乙個位上的數值 基數 x進製的基數就是x 權 對每乙個位上的資料,從右,並且從0開始編號,對應的編號就是該資料的權。結果 係數 基數 權次冪之和。2 十進位製到其他進製 除基取餘,直到商為0,餘數反轉。3 進製轉換的快速轉換法 a 十進位制和二進位制間的轉換 84...
使用有名管道在不同程序間複製檔案
複製端,開啟檔案,並將檔案中資料 寫入管道檔案中 include include include include include include define cpy tmp cpy int main int argc,char const argv while 1 printf 寫入完成 n re...
程序間通訊之協同程序
unix系統過濾程式從標準輸入讀取資料,對其進行適當處理後寫到標準輸出。幾個過濾程式通常在shell管道命令列中線性地連線。當乙個程式產生某個過濾程式的輸入,同時又讀取該過濾程式的輸出時,則該過濾程式就成為協同程序 coprocess korn shell提供了協同程序。bourne shell b...