int sem_p(int semid, int index) ;
buf.sem_num = index;
if(semop(semid, &buf, 1) == -1) ;
buf.sem_num = index;
if(semop(semid, &buf, 1) == -1) {
perror("a wrong operation to semaphore occured!");
return -1;
return 0;
int main(){
int i;
int semid, shmid; //訊號集
key_t keyid;
//建立訊號燈陣列,8個訊號燈
//3 給吸菸者: 0:tobacco&*****,1:*****&glue,2:glue&tobacco //2 給兩個**者: 3,4
//3 for provoder: 5:tobacco&*****,6:*****&glue,7:glue&tobacco //若成功返回semid=訊號燈陣列識別符號,若不成功<0出錯
if((semid = semget(ipc_priv ate, 8, flags)) < 0) {
perror("semget error!");
exit(exit_failure);
//設定陣列中(給生產者的)3~7訊號燈的狀態為1
for(i = 3; i <= 7; i++) {
if((semctl(semid, i, setv al, 1)) < 0) {
semget建立檔案 linux訊號燈操作
訊號量 乙個整數 大於或等於0時代表可供併發程序使用的資源實體數 小於0時代表正在等待使用臨界區的程序數 用於互斥的訊號量初始值應大於0 只能通過p v原語操作而改變 訊號量元素組成 1 表示訊號量元素的值 2 最後操作訊號量元素的程序id 3 等待訊號量元素值 1的程序數 4 等待訊號量元素值為0...
IO 建立檔案
public class demo03 catch exception e public static void test3 throws ioexception,interruptedexception 刪除檔案 boolean flag src.delete system.out.println...
建立檔案鏈結
硬連線 硬連線指通過索引節點來進行連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節點號 inode index 在linux中,多個檔名指向同一索引節點是存在的。一般這種連線就是硬連線。硬連線的作用是允許乙個檔案擁有多個有效路徑名,這樣使用者就可以...