9
3
if (argc != 3)
|
printf(' cần 2 đối số đối với chương trình sao file!');
exit(1)
|
fdold = open (argv[1], O_RDONLY);
/* mở file nguồn chỉ đọc */
if (fdold == -1)
|
printf (' Không thể mở file &cs\n',argv[1]);
exit(1);
|
fdnew =creat (argv[2],0666); /*mở File đich rw cho mọi người */
if (fdnew ==-1)
|
printf('Không thể khởi tạo file &cs\n',argv[2];
exit(1);
|
copy(fdold,fdnew);
exit(0);
|
copy (old, new)
int old, new;
|
int count;
while (count = read(old,buffer,sizeof(buffer))>0)
write(buffer,count);
|
Trong chương trình trên, mã lệnh (gọi là phần text) của file được sinh ra từ các hàm
main và copy. Khởi tạo giá trị ban đầu cho biến version và dành vùng nhớ cho biến mảng
buffer.
Trong ví dụ trên, các tham số argc, argv và các biến fdold, fdnew trong chương trình
main trong stack khi main được gọi (một lần đối với mọi chương trình), còn các tham số
old và new và biến count trong hàm copy xuất hiện mỗi khi copy được gọi.
Stack người dùng
Stack nhân
Biến cục bộ
không có
Địa chỉ frame 2
Địa chỉ quay lại sau khi
write
Hướng tăng của stack
Các tham số
của write
bộ đếm
buffer
mới
frame 3
Frame 3
Các biến cục
bộ
count call write ()
call
func2()
Biến cục bộ
Địa chỉ của Frame 1
Địa chỉ của Frame 1