library home hp.com home products and services support and drivers solutions
cd-rom home
End of Jump to page title
HP OpenVMS Systems
Documentation

Jump to content


HP OpenVMS

HP OpenVMS
HP C ランタイム・ライブラリ・
リファレンス・マニュアル (下巻)


前へ 次へ 目次 索引



setkey

encrypt関数で使用するエンコード・キーを設定します。

形式

#include <unistd.h>

#include <stdlib.h>

void setkey (const char *key;)


引数

key

0,1 を含む,長さ 64 の文字配列。

説明

setkeyの引数には,数値の 0 と 1 からなる文字 (正確にはバイト・データ) だけを含む,長さが 64 の文字配列を指定します。マシンにキーとして設定されるのは,この文字列,つまりバイト列を 8 個のグループに分けて,その各グループの最下位ビットを無視した 56 ビットです。

戻り値はありません。

cryptencryptも参照してください。


setlocale

category および locale 引数によって指定された,プログラムのロケールの該当部分を選択します。この関数を使用すると, 1 つのカテゴリ,またはプログラムのカレント・ロケール全体を変更または照会することができます。

形式

#include <locale.h>

char *setlocale (int category, const char *locale);


引数

category

カテゴリの名前。ロケール全体を変更または照会するには, LC_ALL を指定します。その他の有効なカテゴリ名は以下のとおりです。

locale

ロケールを指定する文字列へのポインタ。

説明

setlocale関数は, category および locale 引数によって指定された,プログラムのロケールの該当部分を設定または照会します。 category 引数として LC_ALL を指定すると,ロケール全体が指定されます。その他の値を指定すると,プログラムのロケールの一部のみが指定されます。

locale 引数は,使用するロケールを識別する文字列をポイントします。この引数は以下のいずれかです。


戻り値

x ロケールを記述する文字列へのポインタ。
NULL エラーが発生したことを示します。 errno が設定されます。



#include <errno.h> 
#include <stdio.h> 
#include <locale.h> 
 
/* This program calls setlocale() three times. The second call  */ 
/* is for a nonexistent locale. The third call is for an        */ 
/* existing file that is not a locale file.                     */ 
 
main() 
{ 
    char *ret_str; 
 
    errno = 0; 
    printf("setlocale (LC_ALL, \"POSIX\")"); 
    ret_str = (char *) setlocale(LC_ALL, "POSIX"); 
 
    if (ret_str == NULL) 
        perror("setlocale error"); 
    else 
        printf(" call was successful\n"); 
                                            
    errno = 0; 
    printf("\n\nsetlocale (LC_ALL, \"junk.junk_codeset\")"); 
    ret_str = (char *) setlocale(LC_ALL, "junk.junk_codeset"); 
 
    if (ret_str == NULL) 
        perror(" returned error"); 
    else 
        printf(" call was successful\n"); 
 
    errno = 0; 
    printf("\n\nsetlocale (LC_ALL, \"sys$login:login.com\")"); 
    ret_str = (char *) setlocale(LC_ALL, "sys$login:login.com"); 
 
    if (ret_str == NULL) 
        perror(" returned error"); 
    else 
        printf(" call was successful\n"); 
} 

この例のプログラムを実行すると,次の結果が生成されます。


setlocale (LC_ALL, "POSIX") call was successful 
 
setlocale (LC_ALL, "junk.junk_codeset") 
returned error: no such file or directory 
 
setlocale (LC_ALL, "sys$login:login.com") 
returned error: nontranslatable vms error code: 0x35C07C 
%c-f-localebad, not a locale file 


setpgid (Alpha, I64)

ジョブ制御のプロセス・グループ ID を設定します。

形式

#include <unistd.h>

int setpgid (pid_t pid, pid_t pgid);


引数

pid

プロセス・グループ ID を設定するプロセスのプロセス ID。

pgid

プロセス・グループ ID として設定する値。

説明

setpgid関数は,既存のプロセス・グループに参加したり,呼び出し元プロセスのセッション内に新しいプロセス・グループを作成するために使用します。セッション・リーダのプロセス・グループ ID は変更されません。

成功して終了すると,プロセス ID が pid であるプロセスのプロセス・グループ ID として, pgid が設定されます。特別なケースとして,pid が 0 の場合は,呼び出し元プロセスのプロセス ID が使用されます。また,pgid が 0 の場合は,指定したプロセスのプロセス・グループ ID が使用されます。


戻り値

0 成功を示します。
- 1 エラーを示します。この関数は,以下のいずれかの値を errno に設定します。

  • EACCES -- pid 引数の値が,呼び出し元プロセスの子プロセスのプロセス ID と一致し,その子プロセスが exec ファミリ関数のいずれかを正常に実行していました。

  • EINVAL -- pgid 引数の値が 0 より小さいか,実装でサポートされていない値でした。

  • EPERM -- pid 引数で指定されたプロセスは,セッション・リーダです。 pid 引数の値が,呼び出し元プロセスの子プロセスのプロセス ID と一致し,その子プロセスが,呼び出し元プロセスと同じセッションに属していません。 pgid 引数の値は有効ですが, pid 引数で指定されたプロセスのプロセス ID と一致していず,呼び出し元プロセスと同じセッション内に, pgid 引数の値と一致するプロセス・グループ ID を持つプロセスがありません。

  • ESRCH -- pid 引数の値が,呼び出し元プロセスのプロセス ID,呼び出し元プロセスの子プロセスのプロセス ID のどちらとも一致しません。


setpgrp (Alpha, I64)

プロセス・グループ ID を設定します。

形式

#include <unistd.h>

pid_t setpgrp (void);


説明

呼び出し元プロセスがまだセッション・リーダでなければ, setpgrpは,呼び出し元プロセスのプロセス・グループ ID として,呼び出し元プロセスのプロセス ID を設定します。 setpgrpで新しいセッションが作成される場合,新しいセッションには制御端末はありません。

呼び出し元プロセスがセッション・リーダの場合, setpgrp関数の効果はありません。


戻り値

x 呼び出し元プロセスのプロセス・グループ ID です。


setpwent

ユーザ・データベースをリワインドします。

形式

#include <pwd.h>

void setpwent (void);


説明

setpwent関数は,ユーザ・データベースを実質的にリワインドし,検索を繰り返し実行できるようにします。

戻り値はありませんが,I/O エラーが発生した場合は, errnoに EIO が設定されます。

getpwentも参照してください。


setregid (Alpha, I64)

実グループ ID と実効グループ ID を設定します。

形式

#include <unistd.h>

int setregid (gid_t rgid, gid_t egid);


引数

rgid

実グループ ID として設定する値。

egid

実効グループ ID として設定する値。

説明

setregid関数は,呼び出し元プロセスの実グループ ID と実効グループ ID を設定するために使用されます。 rgid が - 1 の場合,実グループ ID は変更されません。 egid が - 1 の場合,実効グループ ID は変更されません。実グループ ID と実効グループ ID には,一度の呼び出しで異なる値を設定できます。

IMPERSONATE 特権を持つプロセスだけが,実グループ ID と実効グループ ID に任意の有効な値を設定できます。

特権のないプロセスは,実グループ ID として exec関数による保存済みセット・グループ ID を設定するか,実効グループ ID として保存済みセット・グループ ID または実グループ ID を設定することができます。

呼び出し元プロセスの補助グループ ID は変更されません。

セット・グループ ID プロセスが,自身の実効グループ ID として自身の実グループ ID を設定した場合,実効グループ ID を保存済みセット・グループ ID に戻すことができます。


戻り値

0 成功を示します。
- 1 エラーを示します。どのグループ ID も変更されず, errno に以下のいずれかの値が設定されます。

  • EINVAL -- rgid 引数または egid 引数の値が,不正または範囲外です。

  • EPERM -- プロセスに IMPERSONATE 特権がなく,実グループ ID として保存済みセット・グループ ID を設定したり,実効グループ ID として実グループ ID または保存済みグループ ID を設定する変更以外の変更が要求されました。


setreuid (Alpha, I64)

ユーザ ID を設定します。

形式

#include <unistd.h>

int setreuid (uid_t ruid, uid_t euid);


引数

ruid

実ユーザ ID として設定する値。

euid

実効ユーザ ID として設定する値。

説明

setreuid関数は,現在のプロセスの実ユーザ ID と実効ユーザ ID として, ruid 引数と euid 引数で指定された値を設定します。 ruid または euid が - 1 の場合,現在のプロセスの,対応する実効ユーザ ID や実ユーザ ID は,変更されません。

IMPERSONATE 特権のあるプロセスは,どちらの ID にも任意の値を設定できます。特権のないプロセスは,euid 引数がプロセスの実ユーザ ID,実効ユーザ ID,または保存済みユーザ ID と等しい場合だけ,実効ユーザ ID を設定できます。

IMPERSONATE 特権のないプロセスが,実ユーザ ID を,プロセスの現在の実ユーザ ID,実効ユーザ ID,または保存済みユーザ ID と一致する値に変更できるかどうかは,規定されていません。


戻り値

0 成功を示します。
- 1 エラーを示します。この関数は,以下のいずれかの値を errno に設定します。

  • EINVAL -- ruid 引数または euid 引数の値が,不正または範囲外です。

  • EPERM -- 現在のプロセスに IMPERSONATE 特権がなく,実効ユーザ ID を実ユーザ ID や保存済みセット・ユーザ ID 以外の値に変更しようとしたか,実ユーザ ID を実装で許されていない値に変更しようとしました。


setsid (Alpha, I64)

セッションを作成し,プロセス・グループ ID を設定します。

形式

#include <unistd.h>

pid_t setsid (void);


説明

setsid関数は,呼び出し元プロセスがプロセス・グループ・リーダでなければ,新しいセッションを作成します。戻ったときには,呼び出し元プロセスは,この新しいセッションのセッション・リーダとなっており,また新しいプロセス・グループのプロセス・グループ・リーダとなっています。制御端末は持っていません。呼び出し元プロセスのプロセス・グループ ID には,呼び出し元プロセスのプロセス ID と同じ値が設定されます。呼び出し元プロセスは,新しいプロセス・グループ内で唯一のプロセスであり,また新しいセッション内で唯一のプロセスです。

setsid関数のプロトタイプが見えるようにするには, __USE_LONG_GID_T 機能マクロを有効にする必要があります。


戻り値

x 呼び出し元プロセスのプロセス・グループ ID です。
(pid_t) - 1 エラーを示します。この関数は,次の値を errno に設定します。

  • EPERM -- 呼び出し元プロセスがすでにプロセス・グループ・リーダであるか,呼び出し元プロセス以外のプロセスのプロセス・グループ ID が,呼び出し元プロセスのプロセス ID と一致しています。


前へ 次へ 目次 索引