История изменений
Исправление 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) {