参考下列代码,比较使用系统调用和库函数的文件拷贝程序的速度性能#include <unistd.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.h> int main() { char c; int in, out; in = open(“file.in”, O_RDONLY); out = open(“file.out”, O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR); while(read(in,&c,1) == 1) write(out,&c,1); exit(0); } #include <stdio.h> #include <stdlib.h> int main() { int c; FILE *in, *out; in = fopen(“file.in”,”r”); out = fopen(“file.out”,”w”); while((c = fgetc(in)) != EOF) fputc(c,out); exit(0); }
时间: 2023-11-27 07:52:00 浏览: 115
用系统调用的方式实现文件拷贝
4星 · 用户满意度95%
使用系统调用的文件拷贝程序的代码:
```
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
int main() {
char c;
int in, out;
in = open("file.in", O_RDONLY);
out = open("file.out", O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR);
while(read(in,&c,1) == 1)
write(out,&c,1);
exit(0);
}
```
使用库函数的文件拷贝程序的代码:
```
#include <stdio.h>
#include <stdlib.h>
int main() {
int c;
FILE *in, *out;
in = fopen("file.in","r");
out = fopen("file.out","w");
while((c = fgetc(in)) != EOF)
fputc(c,out);
exit(0);
}
```
为了比较性能,我们可以使用 `time` 命令来分别测试这两个程序的运行时间。在终端中输入如下命令:
```
time ./program1 # program1 为使用系统调用的程序的可执行文件名
```
然后再输入如下命令:
```
time ./program2 # program2 为使用库函数的程序的可执行文件名
```
这两个命令会输出程序的运行时间统计信息,包括用户 CPU 时间、系统 CPU 时间和实际时间。根据实际时间来比较这两个程序的性能。
阅读全文