У меня есть небольшая программа ниже на 2.6.16-rc3, которая использует ящик занятости (в файловой системе jffs2).
Если я запускаю программу несколько раз, она начинает проваливаться второй раз. Когда программа завершает работу, дескрипторы должны автоматически закрываться и в следующий раз запускаться заново, верно?
Почему я иногда получаю -1? (Примечание. На моем ПК с Fedora Linux все работает нормально)
root@badge 07:29:32 ~ >touch Hello.txt
root@badge 07:29:37 ~ >./a.out
FP = 3
root@badge 07:29:38 ~ >./a.out
FP = -1
root@badge 07:29:40 ~ >./a.out
FP = 3
root@badge 07:29:41 ~ >./a.out
FP = -1
root@badge 07:29:42 ~ >./a.out
FP = 3
root@badge 07:29:43 ~ >./a.out
FP = 3
root@badge 07:29:43 ~ >./a.out
FP = -1
root@badge 07:29:45 ~ >
Программа:
#include <stdio.h>
int main()
{
int fp;
fp = open ("Hello.txt");
printf("FP = %d\n", fp);
return 0; // No close() is used. On exit, it shall be closed.
}
Текстовый файл:
-rw-r--r-- 1 root root 0 Sep 20 07:22 Hello.txt