У меня есть программа на фортране, которая вызывает функцию C и открывает файл с помощью open ()
main.f90:
PROGRAM TEST
integer :: oflag, mode
!Set oflag to O_CREAT|O_RDWR
oflag = 66
mode = 600
call test2("test.txt", oflag, mode)
END PROGRAM
test.c:
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#pragma weak test2_ = test2
#pragma weak test2__ = test2
#pragma weak TEST2 = test2
void test2(char* filename, int* flag, int* mode)
{
int fd;
if(-1 == (fd = open(filename, *flag, *mode)))
puts("Returned -1");
}
Я компилирую как:
gcc -c test.c
gfortran main.f90 test.o
Когда я запускаю программу, она создает файл test.txt, но с неправильными разрешениями:
---x--x--T 1 xyz users 0 2011-09-24 16:40 test.txt
когда это должно было быть
-rw------- 1 xyz users 0 2011-09-24 16:45 test.txt
Если я вызываю эту функцию из другой программы на C, она работает нормально. Может кто-нибудь указать, что идет не так?
Технические характеристики:
64-разрядная версия Linux
GNU Fortran (SUSE Linux) 4.5.0, GCC (SUSE Linux) 4.5.0
Спасибо,
Kshitij