日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

cp命令的编写——浅谈系统调用

發布時間:2023/12/10 windows 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cp命令的编写——浅谈系统调用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摘要:linux中cp命令的實現,通過這個程序,我們需要了解系統調用耗費時間的方面,同時學會系統調用的錯誤處理機制。


本文來源:http://blog.csdn.net/trochiluses/article/details/11103523

?

#include<stdio.h> #include<unistd.h> #include<stdlib.h> #include<fcntl.h>#define BUFFERSIZE 4096 #define COPYMODE 644void oops(char *,char *); int main(int argc, char *argv[]) {int in_fd,out_fd,n_chars;char buf[BUFFERSIZE];if((in_fd=open(argv[1],O_RDONLY))==-1)oops("can't open ",argv[1]);if ((out_fd=creat(argv[2],COPYMODE))==-1){oops("cannot creat",argv[2]);}while((n_chars=read(in_fd,buf,BUFFERSIZE))>0){if((write(out_fd,buf,n_chars))!=n_chars){oops("write error to",argv[2]);}}if(n_chars==-1)oops("read err from",argv[1]);if(close(in_fd)==-1||close(out_fd)==-1)oops("fail to close","");return 0; }void oops(char *s1,char *s2) {fprintf(stderr,"Error : %s",s1);perror(s2);exit(1); }


注意:

?

1)關于系統調用

read和write屬于初級讀寫函數,也是系統調用;系統調用需要消耗大量時間。因為代碼執行權會從用戶轉移到內核,執行內核代碼是需要時間的。系統調用開銷巨大,因為系統調用需要特殊的內存和堆棧環境,這些需要在系統調用之前建立好;系統調用之后又需要恢復這些環境。這種環境切換需要耗費大量時間。最好的方法就是建立緩沖區,一次讀取大量數據,避免多次進行系統調用。我們可以用這個思想來改造前一篇中的who。

2)系統調用的錯誤處理

一般約定,系統調用open,write,lseek在出錯時會返回值-1。另外,系統調用都有自己的錯誤集,以open為例,打開文件不存在,沒有讀的權限,打開文件太多等等。內核通過全局變量errno來確定錯誤類型,其中哦功能error.h中規定了一些錯誤的宏。

a??梢愿鶕rrno來分別進行錯誤處理:

?

#include<error.h> extern int errno;int sample() {int fd; fd=open("file",O_RDONLY);if(fd==-1){printf("can not open file:");if(error== ENOENT)printf("there is no such file");if (error==INTR){ printf("interrupted while opening file");} ... } }


b.顯示錯誤信息:

?

可以利用perror來通過error來尋找錯誤信息。

?

#include<error.h> extern int errno;int sample() {int fd; fd=open("file",O_RDONLY);if(fd==-1){perror("can not open file:");} }


?



?

總結

以上是生活随笔為你收集整理的cp命令的编写——浅谈系统调用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。