⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p9.1.c

📁 linux编程源代码,其中是由大量的实例
💻 C
字号:
#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <string.h>#include <errno.h>int  get_access_right(int inq_interval, int retry_times, char* file_name){	int fd,count;	count=0;	fd=creat(file_name,0);	while(fd==-1 && errno==EACCES){		printf("pid:%ld process try to get access right...\n",(long)getpid());		if(++count<retry_times)			sleep(inq_interval);		else			return -1;		fd=creat(file_name,0);	}	close(fd);	if(fd!=-1)		return 1;	else 		return -1;}int  release_right(char* file_name){	int result;	result=unlink(file_name);	if(result==0)		return 1;	else		return -1;}int main(int argc,char* argv[]){	int retry_times,inq_interval;	char* file_name;	int len;	int count;	count=0;	if(argc!=4){		printf("Usage: %s retry_times inquire_interval file_name\n",argv[0]);		return 1;	}	retry_times=atoi(argv[1]);	if(retry_times<=0){		printf("illegal retry times!\n");		return 1;	}	inq_interval=atoi(argv[2]);	if(inq_interval<=0){		printf("illegal inquiring interval\n");		return 1;	}	len=strlen(argv[3]);	if(len==0){		printf("illegal file name\n");		return 1;	}	if(get_access_right(inq_interval,retry_times,argv[3])==1){		while(count<5){			printf("pid: %ld  process is occupying the resource, circle %d \n",(long)getpid(),count);			count++;			sleep(inq_interval);		}		release_right(file_name);		return 0;	}else		printf("pid: %ld  process cannot access the resource...retry %d times\n",(long)getpid(),retry_times);	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -