c_cpp 羊群的例子

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 羊群的例子相关的知识,希望对你有一定的参考价值。

//lockfile.c

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>

int main()
{
	int fd,i;
	char path[]="/home/king/test.txt";
	extern int errno;
	fd=open(path,O_WRONLY|O_CREAT);
	if(fd!=-1)
	{
		printf("open file %s ./n",path);
		printf("please input a number to lock the file./n");
		scanf("%d",&i);
		if(flock(fd,LOCK_EX)==0)
		{
			printf("the file was locked./n");
		}
		else
		{
			printf("the file was not locked./n");
		}
		printf("please input a number to unlock the file./n");
		scanf("%d",&i);
		if(flock(fd,LOCK_UN)==0)
		{
			printf("the file was unlocked./n");
		}
		else
		{
			printf("the file was not unlocked./n");
		}
		close(fd);

	}
	else
	{
		printf("cannot open file %s/n",path);
		printf("errno:%d/n",errno);
		printf("errMsg:%s",strerror(errno));
	}
}



//testprocess.c

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/file.h>

int main()
{
	int fd,i;
	char path[]="/home/king/test.txt";
	char s[]="writing.../nwriting....../n";
	extern int errno;
	fd=open(path,O_WRONLY|O_CREAT|O_APPEND);
	if(fd!=-1)
	{
		printf("open file %s ./n",path);

		if(flock(fd,LOCK_EX|LOCK_NB)==0)
		{
			printf("the file was locked by the process./n");    
			if(-1!=write(fd,s,sizeof(s)))
			{
				printf("write %s to the file %s/n",s,path);
			}
			else
			{
				printf("cannot write the file %s/n",path);
				printf("errno:%d/n",errno);
				printf("errMsg:%s/n",strerror(errno));
			}        

		}
		else
		{
			printf("the file was locked by other process.Can't write.../n");
			printf("errno:%d:",errno);
		}

		close(fd);


	}
	else
	{
		printf("cannot open file %s/n",path);
		printf("errno:%d/n",errno);
		printf("errMsg:%s",strerror(errno));
	}
}

以上是关于c_cpp 羊群的例子的主要内容,如果未能解决你的问题,请参考以下文章

集群中的羊群效应

bash羊群:为啥是200?

VUE 精选:鱼群羊群鸟群。

在错误的情况下释放羊群?

c_cpp oF迷你的例子

c_cpp LZ4的例子