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

📄 joindump.c

📁 Parallel programming/Lou Baker, Bradley J.Smith .—New York:McGraw-Hill Book Co.
💻 C
字号:
/* Program to join split files */
#include <stdio.h>

void
main(int argc, char **argv)
{
 FILE *f, *out, *hf;
 int i;
 char name[256];
 char tmp[256], host[256];
 int n;
 char buf[4096];

 if(argc != 2 && argc != 3 && argc != 4)
	{
	fprintf(stderr, "Usage: joindump <filename> [hosts]\n");
	exit(1);
	}

 if((out=fopen(argv[1],"w")) == NULL)
	{
	fprintf(stderr, "Can't open output file '%s' for write\n", argv[1]);
	exit(1);
	}
 if(argc >= 3)
	{
	if((hf = fopen(argv[2], "r")) == NULL)
		{
		fprintf(stderr,"Can't open host file %s\n", argv[2]);
		exit(1);
		}
	}
 else
	hf = NULL;
 if(argc == 4)
	i=atoi(argv[3]);
 else
	i=0;
 for(; i<2048; i++)
	{
	sprintf(name, "%s.%d", argv[1], i);
	if(hf)
		{
		if(fgets(host,sizeof(host),hf) == NULL)
			break;
		if(host[strlen(host)-1] == '\n')
			host[strlen(host)-1] = '\0';
		sprintf(tmp,"rcp %s:/tmp/%s %s", host, name, name);
		if(system(tmp) != 0)
			{
			fprintf(stderr,"Joindump failed in RCP: %s\n", tmp);
			exit(1);
			}
		sprintf(tmp,"rsh %s 'rm -f /tmp/%s'", host,name);
		if(system(tmp) != 0)
			fprintf(stderr,"Warning: RM failed: %s\n", tmp);
		}

	printf("Joining %s\n", name);
 	if((f=fopen(name,"r")) == NULL)
		break;
	while((n=fread(buf, 1, sizeof(buf), f)) > 0)
		fwrite(buf, 1, n, out);
	fclose(f);
	unlink(name);
	}

#ifdef NOTDEF
 for(i=0; i<2048; i++)
	{
	sprintf(name, "%s.%d", argv[1], i);
	if(access(name,0) == 0)
		unlink(name);
	else
		break;
	}
#endif
		
 fclose(out);
}

⌨️ 快捷键说明

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