C 関数を呼び出し、open() を使用してファイルを開く Fortran プログラムがあります。
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
ありがとう、クシティジ