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 程式介面 允許使用者通過程式間接使用 由一組系統呼叫...