LINUX.ORG.RU

История изменений

Исправление metawishmaster, (текущая версия) :

в идеале, конечно, лучше переставить выражения в main от объявления переменных до fork(), чтоб не открывать файл, если параметры плохие:

	char inp;

	if (argc < 4) {
		printf("error: insuffucient arguments\n");
		return 1;
	}
	N = atoi(argv[2]);
	M = atoi(argv[3]);

	if (M < 0 || N < 0) {
		printf("error: incorrect arguments\n");
		return 1;
	}

	if ((f_in = open(argv[1], O_CREAT | O_RDWR, S_IRUSR | S_IWUSR)) < 0) {
		printf("error: can't open %s\n", argv[1]);
		return 1;
	}

	if (M == 0) {
		while (read(f_in, &inp, 1) == 1)
			write(1, &inp, 1);
		close(f_in);
		return 0;
	}

	if ((pid = fork()) < 0) {
		printf("error: can't fork\n");
	} else if (pid == 0) {


p.s. и не молчи как партизан - спрашивай, если что не понятно :)

Исправление metawishmaster, :

в идеале, конечно, лучше переставить выражения в main от объявления переменных до fork(), чтоб не открывать файл, если параметры плохие:

	char inp;

	if (argc < 4) {
		printf("error: insuffucient arguments\n");
		return 1;
	}
	N = atoi(argv[2]);
	M = atoi(argv[3]);

	if (M < 0 || N < 0) {
		printf("error: incorrect arguments\n");
		return 1;
	}

	if ((f_in = open(argv[1], O_CREAT | O_RDWR, S_IRUSR | S_IWUSR)) < 0) {
		printf("error: can't open %s\n", argv[1]);
		return 1;
	}

	if (M == 0) {
		while (read(f_in, &inp, 1) == 1)
			write(1, &inp, 1);
		close(f_in);
		return 0;
	}

	if ((pid = fork()) < 0) {
		printf("error: can't fork\n");
	} else if (pid == 0) {


p.s. и не молчи как партизан - спрашивает, если что не понятно :)

Исправление metawishmaster, :

в идеале, конечно, лучше переставить выражения в main от объявления переменных до fork(), чтоб не открывать файл, если параметры плохие:

	char inp;

	if (argc < 4) {
		printf("error: insuffucient arguments\n");
		return 1;
	}
	N = atoi(argv[2]);
	M = atoi(argv[3]);

	if (M < 0 || N < 0) {
		printf("error: incorrect arguments\n");
		return 1;
	}

	if ((f_in = open(argv[1], O_CREAT | O_RDWR, S_IRUSR | S_IWUSR)) < 0) {
		printf("error: can't open %s\n", argv[1]);
		return 1;
	}

	if (M == 0) {
		while (read(f_in, &inp, 1) == 1)
			write(1, &inp, 1);
		close(f_in);
		return 0;
	}

	if ((pid = fork()) < 0) {
		printf("error: can't fork\n");
	} else if (pid == 0) {

Исправление metawishmaster, :

в идеале, конечно, лучше переставить выражения в main от объявления переменных до fork(), чтоб не открывать файл, если параметры плохие:

[br]	char inp;[br][br]	if (argc < 4) {[br]		printf("error: insuffucient arguments\n");[br]		return 1;[br]	}[br]	N = atoi(argv[2]);[br]	M = atoi(argv[3]);[br][br]	if (M < 0 || N < 0) {[br]		printf("error: incorrect arguments\n");[br]		return 1;[br]	}[br][br]	if ((f_in = open(argv[1], O_CREAT | O_RDWR, S_IRUSR | S_IWUSR)) < 0) {[br]		printf("error: can't open %s\n", argv[1]);[br]		return 1;[br]	}[br][br]	if (M == 0) {[br]		while (read(f_in, &inp, 1) == 1)[br]			write(1, &inp, 1);[br]		close(f_in);[br]		return 0;[br]	}[br][br]	if ((pid = fork()) < 0) {[br]		printf("error: can't fork\n");[br]	} else if (pid == 0) {[br]

Исходная версия metawishmaster, :

в идеале, конечно, лучше переставить выражения в main от объявления переменных до fork(), чтоб не открывать файл, если параметры плохие:

	char inp;

	if (argc < 4) {
		printf("error: insuffucient arguments\n");
		return 1;
	}
	N = atoi(argv[2]);
	M = atoi(argv[3]);

	if (M < 0 || N < 0) {
		printf("error: incorrect arguments\n");
		return 1;
	}

	if ((f_in = open(argv[1], O_CREAT | O_RDWR, S_IRUSR | S_IWUSR)) < 0) {
		printf("error: can't open %s\n", argv[1]);
		return 1;
	}

	if (M == 0) {
		while (read(f_in, &inp, 1) == 1)
			write(1, &inp, 1);
		close(f_in);
		return 0;
	}

	if ((pid = fork()) < 0) {
		printf("error: can't fork\n");
	} else if (pid == 0) {