<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1.2//EN"
  "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">


<refentry id="gfs-pio-create.3">

<refentryinfo><date>3 Sep 2015</date></refentryinfo>

<refmeta>
<refentrytitle>gfs_pio_create</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>Gfarm</refmiscinfo>
</refmeta>

<refnamediv id="name">
<refname>gfs_pio_create</refname>
<refpurpose>Gfarmファイルシステムのファイルの作成</refpurpose>
</refnamediv>
<refsynopsisdiv id="synopsis">
<funcsynopsis>
<funcsynopsisinfo format="linespecific">
#include &lt;gfarm/gfarm.h&gt;
</funcsynopsisinfo>

<funcprototype>
  <funcdef><function moreinfo="none"><returnvalue>gfarm_error_t</returnvalue> gfs_pio_create</function></funcdef>
    <paramdef>const char * <parameter moreinfo="none">gfarm_url</parameter></paramdef>
    <paramdef>int <parameter moreinfo="none">flags</parameter></paramdef>
    <paramdef>gfarm_mode_t <parameter moreinfo="none">mode</parameter></paramdef>
    <paramdef>GFS_File * <parameter moreinfo="none">gfp</parameter></paramdef>
</funcprototype>

</funcsynopsis>
</refsynopsisdiv>

<!-- body begins here -->

<refsect1 id="description"><title>DESCRIPTION</title>
<para>指定した
<parameter moreinfo="none">gfarm_url</parameter>
に、モード
<parameter moreinfo="none">mode</parameter>
でファイルを新規作成し、
<parameter moreinfo="none">GFS_File</parameter>
構造体を
<parameter moreinfo="none">gfp</parameter>
の指す先に返します。</para>

<para>
引数
<parameter moreinfo="none">flags</parameter>
は、
<function moreinfo="none">gfs_pio_open()</function>
の第二引数と同じ意味を持ちます。
<parameter moreinfo="none">GFARM_FILE_RDONLY</parameter>、
<parameter moreinfo="none">GFARM_FILE_WRONLY</parameter>、
<parameter moreinfo="none">GFARM_FILE_RDWR</parameter>
のいずれか一つのフラグを必ず指定しなければならない点も同じです。
ただし、
<function moreinfo="none">gfs_pio_create()</function>
に特有のフラグとして、
<parameter moreinfo="none">GFARM_FILE_EXCLUSIVE</parameter>
を指定することができます。この指定を行なった場合、
ファイルが既に存在する場合は、ファイルのオープンに失敗します。
</para>
<para>
引数
<parameter moreinfo="none">flags</parameter>
の値として
<parameter moreinfo="none">GFARM_FILE_TRUNC</parameter>
が必要な場合は、
明示的に指定する必要がありますので、ご注意ください。
</para>
</refsect1>

<refsect1 id="return-values"><title>RETURN VALUES</title>
<variablelist>
<varlistentry>
<term><constant>GFARM_ERR_NO_ERROR</constant></term>
<listitem>
<para>正常終了を示します。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GFARM_ERR_IS_A_DIRECTORY</constant></term>
<listitem>
<para>指定されたファイルはディレクトリです。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GFARM_ERR_IS_A_SYMBOLIC_LINK</constant></term>
<listitem>
<para>指定されたファイルはシンボリックリンクです。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GFARM_ERR_OPERATION_NOT_PERMITTED</constant></term>
<listitem>
<para>指定されたファイルはファイルではありません。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GFARM_ERR_NOT_A_DIRECTORY</constant></term>
<listitem>
<para>指定したパス名の親ディレクトリが、ディレクトリではありません。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GFARM_ERR_PERMISSION_DENIED</constant></term>
<listitem>
<para>指定されたファイルに対し、
<parameter moreinfo="none">flags</parameter>
で指定されたモードでアクセスする権限がないか、その親ディレクトリへの
書き込み権限がありません。
あるいは、メタデータサーバへの認証に失敗しました。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GFARM_ERR_NO_MEMORY</constant></term>
<listitem>
<para>メモリ不足のため処理を中止しました。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GFARM_ERR_INVALID_ARGUMENT</constant></term>
<listitem>
<para><parameter moreinfo="none">flags</parameter>
の指定が不正です。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GFARM_ERR_GFARM_URL_HOST_IS_MISSING</constant></term>
<listitem>
<para><parameter moreinfo="none">gfarm_url</parameter>
で指定されたGfarm URLにおいて、
メタデータサーバが指定されていません。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GFARM_ERR_GFARM_URL_PORT_IS_MISSING</constant></term>
<listitem>
<para><parameter moreinfo="none">gfarm_url</parameter>
で指定されたGfarm URLにおいて、
メタデータサーバのポート番号が指定されていません。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GFARM_ERR_UNKNOWN_HOST</constant></term>
<listitem>
<para>指定されたメタデータサーバのアドレス解決ができません。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GFARM_ERR_TOO_MANY_OPEN_FILES</constant></term>
<listitem>
<para>プロセスにおけるオープン可能なファイル数の限界に達しました。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GFARM_ERR_TOO_MANY_OPEN_FILES_IN_SYSTEM</constant></term>
<listitem>
<para>システムにおけるオープンできるファイル数の限界に達しました。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GFARM_ERR_NETWORK_IS_UNREACHABLE</constant></term>
<listitem>
<para>メタデータサーバに到達できません。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GFARM_ERR_OPERATION_TIMED_OUT</constant></term>
<listitem>
<para>メタデータサーバへの接続がタイムアウトをおこしました。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GFARM_ERR_PROTOCOL</constant></term>
<listitem>
<para>メタデータサーバとの通信にプロトコルエラーが発生しました。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GFARM_ERR_BROKEN_PIPE</constant></term>
<listitem>
<para>メタデータサーバとの通信が切断しました。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GFARM_ERR_PROTOCOL_NOT_SUPPORTED</constant></term>
<listitem>
<para>指定された認証プロトコルはサポートしていません。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GFARM_ERR_AUTHENTICATION</constant></term>
<listitem>
<para>メタデータサーバに対する認証に失敗しました。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GFARM_ERR_ALREADY_EXISTS</constant></term>
<listitem>
<para><parameter moreinfo="none">flags</parameter>引数に
<constant>GFARM_FILE_EXCLUSIVE</constant>フラグが指定されたが、
ファイルが既に存在しました。
</para>
</listitem>
</varlistentry>

<!--
<varlistentry>
<term><constant>GFARM_ERR_READ_ONLY_FILE_SYSTEM</constant></term>
<listitem>
<para>指定したパス名は読み込み専用ファイルシステム上にあります。</para>
</listitem>
</varlistentry>
 -->

<varlistentry>
<term>その他</term>
<listitem>
<para>上記以外のエラーが生じたことを示します。
<citerefentry><refentrytitle>gfarm_error_string</refentrytitle><manvolnum>3</manvolnum></citerefentry>
によりエラーの原因を文字列に変換することができます。
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>

<refsect1 id="see-also"><title>SEE ALSO</title>
<para>
<citerefentry><refentrytitle>gfs_pio_close</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>gfs_pio_create</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>gfs_pio_eof</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>gfs_pio_error</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>gfs_pio_flush</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>gfs_pio_getc</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>gfs_pio_getline</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>gfs_pio_open</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>gfs_pio_putc</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>gfs_pio_putline</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>gfs_pio_puts</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>gfs_pio_read</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>gfs_pio_seek</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>gfs_pio_ungetc</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>gfs_pio_write</refentrytitle><manvolnum>3</manvolnum></citerefentry>
</para>
</refsect1>
</refentry>
