7.2 f90_unix_dir
このモジュールは ISO/IEC 9945-1:1990 Portable Operating System Interface (POSIX) - Part 1: System Application Program Interface (API) [C Language] で詳細に規定される機能に対するFortran APIの一部を提供するものです。
このモジュール中の手続きはセクション 5.2 ワーキングディレクトリ、 5.3.3 ファイル作成マスクの設定、 5.3.4 ファイルへのリンク、 5.4 特殊ファイルの作成、 5.5 ファイルの削除 に由来するものです。
エラー処理についてはF90_UNIX_ERRNO
に記述されています。
省略可能なERRNO
引数を用いた手続きに対し、エラーが生じERRNO
が存在しなかった場合には、プログラムは終了させられる点に注意してください。
このモジュール中のすべての手続きは総称的であると同時に個別的でもあります。
7.2.1 パラメータ
INTEGER,PARAMETER :: MODE_KINDファイルアクセス権限(ISO/IEC 9945-1参照)を表すのに使用される整数種別。 個別のアクセス権限に対応したパラメータは
F90_UNIX_FILE
に含まれています。
7.2.2 手続き
SUBROUTINE CHDIR(PATH,ERRNO) CHARACTER(*),INTENT(IN) :: PATH INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNO現行のワーキングディレクトリを
PATH
にセットします。
PATH
中の末尾の空白は意味を持つ場合があるので注意してください。
ERRNO
が存在する場合にはエラーステータスを受け取ることができます。
起りうるエラー条件にはEACCES
, ENAMETOOLONG
, ENOTDIR
,
ENOENT
があります(F90_UNIX_ERRNO
参照)。
SUBROUTINE GETCWD(PATH,LENPATH,ERRNO) CHARACTER(*),OPTIONAL,INTENT(OUT) :: PATH INTEGER(int32),OPTIONAL,INTENT(OUT) :: LENPATH INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNO現行のワーキングディレクトリ情報にアクセスします。
PATH
が存在する場合には現行ワーキングディレクトリの名称を受け取る
ことができます。その際、現行ワーキングディレクトリ名称の長さがPATH
の長さと異なった場合には、空白の追加、あるいは切取りが適宜行われます。
LENPATH
が存在する場合には現行ワーキングディレクトリ名称の長さを
受け取ることができます。
ERRNO
が存在する場合にはエラーステータスを受け取ることができます。
PATH
, LENPATH
が共に存在しなかった場合にはエラーEINVAL
が発生します。現行ワーキングディレクトリへのパスがサーチできなかった場合
にはエラーEACCES
が発生します。PATH
が存在するものの
LENPATH
が存在しなかった場合で、かつPATH
が現行ワーキングディ
レクトリ名称よりも短かった場合には、エラーERANGE
が発生します。
(F90_UNIX_ERRNO
参照)
SUBROUTINE LINK(EXISTING,NEW,ERRNO) CHARACTER(*),INTENT(IN) :: EXISTING,NEW INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNO既存のファイル(
EXISTING
で名称指定されたもの)に対し新たなリンク
(その名称はNEW
で与えられる)を作成します。
起りうるエラーにはEACCES
, EEXIST
, EMLINK
,
ENAMETOOLONG
, ENOENT
, ENOSPC
, ENOTDIR
,
EPERM
, EROFS
, EXDEV
があります
(F90_UNIX_ERRNO
参照)。
SUBROUTINE MKDIR(PATH,MODE,ERRNO) CHARACTER(*),INTENT(IN) :: PATH INTEGER(mode_kind),INTENT(IN) :: MODE INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNO
PATH
で指定された名称を持ち、モード(F90_UNIX_FILE
参照)が
MODE
の新たなディレクトリを作成します。
PATH
中の末尾の空白は意味を持つ場合があるので注意してください。
起りうるエラーにはEACCES
, EEXIST
, EMLINK
,
ENAMETOOLONG
, ENOENT
, ENOSPC
, ENOTDIR
,
EROFS
があります(F90_UNIX_ERRNO
参照)。
SUBROUTINE MKFIFO(PATH,MODE,ERRNO) CHARACTER(*),INTENT(IN) :: PATH INTEGER(mode_kind),INTENT(IN) :: MODE INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNO
PATH
で指定された名称を持ち、モードがMODE
の新たなFIFO特殊
ファイルを作成します。
PATH
中の末尾の空白は意味を持つ場合があるので注意してください。
起りうるエラーにはEACCES
, EEXIST
, ENAMETOOLONG
,
ENOENT
, ENOSPC
, ENOTDIR
, EROFS
があります
(F90_UNIX_ERRNO
参照)。
SUBROUTINE RENAME(OLD,NEW,ERRNO) CHARACTER(*),INTENT(IN) :: OLD CHARACTER(*),INTENT(IN) :: NEW INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNOファイル名称を
OLD
からNEW
に変更します。
ファイルNEW
が存在した場合には、それは最初に削除されます。
OLD
またはNEW
中の末尾の空白は意味を持つ場合があるので注意
してください。
起りうるエラーにはEACCES
, EBUSY
, EEXIST
,
ENOTEMPTY
, EINVAL
, EISDIR
, ENAMETOOLONG
,
EMLINK
, ENOENT
, ENOSPC
, ENOTDIR
, EROFS
, EXDEV
があります(F90_UNIX_ERRNO
参照)。
SUBROUTINE RMDIR(PATH,ERRNO) CHARACTER(*),INTENT(IN) :: PATH INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNOディレクトリ
PATH
を削除します。
PATH
中の末尾の空白は意味を持つ場合があるので注意してください。
起りうるエラーにはEACCES
, EBUSY
, EEXIST
,
ENOTEMPTY
, ENAMETOOLONG
, ENOENT
, ENOTDIR
,
EROFS
があります(F90_UNIX_ERRNO
参照)。
SUBROUTINE UMASK(CMASK,PMASK) INTEGER(mode_kind),INTENT(IN) :: CMASK INTEGER(mode_kind),OPTIONAL,INTENT(OUT) :: PMASK呼出し元プロセスのファイルモード作成マスクを
CMASK
にセットします。
PMASK
が存在した場合には、該当マスクのそれまでの値を受け取ること
ができます。
SUBROUTINE UNLINK(PATH,ERRNO) CHARACTER(*),INTENT(IN) :: PATH INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNOファイル
PATH
を削除します。
PATH
中の末尾の空白は意味を持つ場合があるので注意してください。
起りうるエラーにはEACCES
, EBUSY
, ENAMETOOLONG
,
ENOENT
, ENOTDIR
, EPERM
, EROFS
があります
(F90_UNIX_ERRNO
参照)。