檔案操作 系統呼叫 dup lseek

2021-09-05 10:04:49 字數 1527 閱讀 4486

dup

#include #include #include #include #include #include int main1()

int newfd = open("test", o_wronly|o_creat, 0766);

if (-1 == newfd)

newfd = dup(fd); //同步偏移量,此時newfd的偏移量等同fd

printf ("fd = %d\n", fd);

printf ("newfd = %d\n", newfd);

write(fd, "hello", 5);

write(newfd, "world", 5); //此時test顯示為helloworld

close(fd);

return 0;

}int main()

int newfd = open("test1", o_wronly|o_creat, 0766);

if (-1 == newfd)

// 將檔案描述符表中指標部分 複製乙份給 newfd

// 如果複製成功,則會將 原來 newfd 開啟的檔案關閉

dup2(fd, newfd);

printf ("fd = %d\n", fd); //fd 和 newfd 的值時不同的

printf ("newfd = %d\n", newfd);

write(fd, "hello", 5);

write(newfd, "world", 5); //test顯示為helloworld

close(fd);

return 0;

}

lseek

#include #include #include #include #include #include #define size 1024*1024*40

int main1()

// 獲取檔案大小

off_t ret = lseek(fd, 0, seek_end);

printf ("檔案大小:%ld\n", ret);

close(fd);

return 0;

}int main2()

write(fd, "hello", 5);

off_t ret = lseek(fd, 3, seek_set);

write(fd, "world", 5);

close(fd);

return 0;

}// 建立大檔案

int main3()

off_t ret = lseek(fd, size-1, seek_set);

write(fd, "a", 1);

printf ("ret:%ld\n", ret);

close(fd);

return 0;

}// 建立大檔案

int main()

作業系統 系統呼叫

由作業系統提供的功能,通常應用程式本身是無法實現的。例如對檔案進行操作,應用程式必需通過系統呼叫才能做到,因為只有作業系統才具有直接管理外圍裝置的許可權。又如程序或執行緒間的同步互斥操作,也必需經由作業系統對核心變數進行維護才能完成。從下到上看乙個完整的計算機系統 物理硬體 os核心 os服務 應用...

作業系統(六)系統呼叫

在前幾篇文章中曾經提到過系統呼叫程式介面,並提到系統呼叫使應用程式請求作業系統服務的唯一方式。下面再來更進一步地學習一下。目錄 1.6 系統呼叫 1.6.1 系統呼叫 1.6.2 系統呼叫的具體使用場景 1.6.3 系統呼叫的過程 系統呼叫 是作業系統提供給應用程式 程式設計師 程式設計人員 使用的...

作業系統(3)系統呼叫

作業系統作為使用者和計算機硬體之間的介面,需要向上提供一些簡單的服務。主要包括命令介面和程式介面。其中程式介面由一組系統呼叫組成。1 命令介面 允許使用者直接使用 聯機命令介面 使用者說一句,系統做一句。離線命令介面 使用者說一堆,系統做一堆。2 程式介面 允許使用者通過程式間接使用 由一組系統呼叫...