Доброго времени суток! Хотел спросить, почему вызов open может возвращать 0. Насколько я помню, 1,2 - это stdin&stdout, т.е. open должна возвращать как минимум число 3.
if(green_file = open("greenfile.txt", O_WRONLY |O_CREAT |O_TRUNC,0777 )<0)
{
critical_error("Ошибка открытия файла");
}
fprintf(stderr, "fd:%d\n", green_file);
fd выдает равный нулю. write при попытке записать в этот дескриптор возвращает -1.
Может ли это быть связано с тем, что открытие файла идет в одном из процессов, порожденных fork'ом?