前へ | 次へ | 目次 | 索引 |
プロセス ID によって指定されたプロセスにシグナルを送信します。
#include <signal.h>int kill (int pid, int sig);
pid
プロセス ID。sig
シグナル・コード。
kill関数は, main関数を含んでいる C および C++ プログラムでのみ使用できます。kill関数は,プロセスが raiseを呼び出したときと同じように,プロセスに対してシグナルを送信します。シグナルが ターゲット・プログラムによってトラップまたは無視されなかった場合,そのプログラムは実行を終了します。
OpenVMS VAX および Alpha は,シグナルの送信先として指定できるプロセスに関して,異なる規則をインプリメントしています。プログラムは, vfork/ execによって起動された子プロセスには,つねにシグナルを送信する権限を持っています。その他のプロセスでの結果は,システムの OpenVMS セキュリティ・モデルによって決定されます。
OpenVMS の制約のために, kill関数は,特権付きでインストールされたイメージを実行するターゲット・プロセスにシグナルを配信することはできません。
システム特権がない限り,送信側と受信側のプロセスは,同じ利用者識別コード (UIC) を持っている必要があります。
バージョン 7.0 より前の OpenVMS システムでは, killはシグナル値 0 を, SIGKILL が指定された場合と同じように扱います。
OpenVMS バージョン 7.0 およびそれ以降のシステムでは, <stdlib.h>をインクルードし, _POSIX_EXIT 機能テスト・マクロを設定してコンパイルすると,次のようになります。
- シグナル値が 0 ならば, killはプロセス ID を確認するが,シグナルを送信しない。
- プロセス ID が有効でなければ, killは - 1 を返し, errnoを ESRCH に設定する。
0 kill をキューに入れることに成功したことを示します。 - 1 エラーを示します。受信側のプロセスが異なる UIC を持っており,ユーザがシステム・ユーザでないか,受信側のプロセスが存在しません。
long 整数を,文字列に変換します。
#include <stdlib.h>char *l64a (long l);
l
文字列に変換する long 整数。
a64l関数と l64a関数は,ベース 64 ASCII 文字として格納された数値を操作するために使用します。
- a64lは,文字列を long 整数に変換します。
- l64aは,long 整数を文字列に変換します。
long 整数を格納するための各文字は,0 〜 63 の数値を表しています。 long 整数を表すために,最大 6 文字を使用できます。
文字は,次のように変換されます。
- ピリオド (.) は,0 を表します。
- スラッシュ (/) は,1 を表します。
- 0 〜 9 の数字は,2 〜 11 を表します。
- 大文字 A 〜 Z は,12 〜 37 を表します。
- 小文字 a 〜 z は,38 〜 63 を表します。
l64a関数は,long 整数を受け取り,下位 32 ビットに対応するベース 64 記法文字列へのポインタを返します。
l64aが返す値は,スレッド固有のパッファへのポインタです。そのバッファの内容は,同じスレッドからの以降の呼び出しで上書きされます。
a64lも参照してください。
x 成功した場合,対応するベース 64 ASCII 文字列へのポインタです。 l パラメータが 0 の場合, l64a は空文字列へのポインタを返します。
整数の絶対値を long intとして返します。
#include <stdlib.h>long int labs (long int j);
j
long int型の値。
48 ビットの一様分布の擬似乱数列を初期化します。
#include <stdlib.h>void lcong48 (unsigned short int param[7]);
param
初期値 Xi,乗数値 a,および加算される値 c を指定する配列。
lcong48関数は,線形合同法アルゴリズムと 48 ビット整数算術演算を使用して,擬似乱数を生成します。 lcong48は,以下の関数を呼び出す前に,乱数ジェネレータを初期化する目的に使用することができます。drand48
lrand48
mrand48lcong48関数は,初期値 Xi,乗数値 a,および加算される値 c を指定します。 param 配列の各要素は,以下のものを指定します。
param[0-2] X i param[3-5] 乗数値 a param[6] 16 ビットの加算される値 c
lcong48が呼び出された後に, srand48または seed48が呼び出されると, a と c は以前に指定された標準値に復元されます。
lcong48関数は値を返しません。
drand48, lrand48, mrand48, srand48, seed48も参照してください。
第 2 引数を n としたときに,第 1 引数に 2 の n 乗を掛けた値,すなわち x(2n) を返します。
#include <math.h>double ldexp (double x, int n);
float ldexp (float x, int n); (Alpha only)
long double ldexp (long double x, int n); (Alpha only)
x
2n を掛けることになる, double, float,または long double型の基本値。n
2 を何乗するかを示す整数の指数値。
x(2 n) 第 2 引数を n としたときに,第 1 引数に 2 の n 乗を掛けた値。 0 アンダフローが発生しました。 errno は ERANGE に設定されます。 HUGE_VAL オーバフローが発生しました。 errno は ERANGE に設定されます。 NaN x は NaN です。 errno は EDOM に設定されます。
引数の間で除算を行い,商と剰余を返します。
#include <stdlib.h>ldiv_t ldiv (long int numer, long int denom);
numer
long int型の分子。denom
long int型の分母。
ldiv_t型は, <stdlib.h>ヘッダ・ファイルに次のように定義されています。
typedef struct { long quot, rem; } ldiv_t;
divも参照してください。
Curses に対し,ウィンドウの更新後に,カーソルを現在の座標に配置するよう指示します。
#include <curses.h>leaveok (WINDOW *win, bool boolf);
win
ウィンドウへのポインタ。boolf
論理型の TRUE または FALSE 値。 boolf が TRUE ならば,カーソルは最後の更新後もその位置に留まり, win の座標設定はそれに従って変更されます。 boolf が FALSE ならば,カーソルは win の現在指定されている (y,x) 座標に移動します。
leaveok関数は,デフォルトでは,win の現在座標にカーソルを移動します。 bool型は, <curses.h>ヘッダ・ファイルに次のように定義されています。
#define bool int
ガンマ関数の対数を計算します。
#include <math.h>double lgamma (double x);
float lgammaf (float x);
long double lgammal (long double x);
x
実数。x は 0,負の整数,または無限大であってはなりません。
lgamma関数は, x のガンマの絶対値の対数,すなわち G をガンマ関数として, ln(|G(x)|) を返します。x のガンマの符号は,外部整変数 signgamに返されます。 x 引数は 0,負の整数,または無限大であってはなりません。
x x 引数のガンマの対数。 -HUGE_VAL x 引数は負の整数です。 errno は ERANGE に設定されます。 NaN x 引数は NaN です。 errno は EDOM に設定されます。 0 アンダフローが発生しました。 errno は ERANGE に設定されます。 HUGE_VAL オーバフローが発生しました。 errno は ERANGE に設定されます。
既存のファイルへの新しいリンク (ディレクトリ・エントリ) を作成します。この関数は,ハード・リンク・カウントが有効になっているボリューム上でのみサポートされています。
#include <unistd.h>link (const char *path1, const char *path2);
path1
既存のファイルを指定するパス名へのポインタ。path2
作成する新しいディレクトリ・エントリを指定するパス名へのポインタ。
link関数は,既存のファイルのための新しいリンクをアトミックに作成し,ファイルのリンク・カウントを 1 だけインクリメントします。link関数は,ディレクトリ・ファイルに対して使用することができます。
linkが失敗した場合,リンクは作成されず,ファイルのリンク・カウントは変更されません。
0 実行に成功しました。 - 1 エラーを示します。この関数は, errno を以下のいずれかの値に設定します。
- EEXIST -- path2 で指定されたリンクが存在する。
- EFTYPE -- path1 または path2 にワイルドカードが含まれている。
- EINVAL -- 片方または両方の引数が,構文的に無効なパス名を指定している。
- ENAMETOOLONG -- path1 または path2 の長さが{PATH_MAX}を超えているか,パス名コンポーネントが{NAME_MAX}を超えている。
- EXDEV -- path2 によって指定されたリンクと, path1 によって指定されたファイルは,異なるデバイス上に存在している。
struct lconv型の構造体のメンバを,現在のロケールの規則に従って数値の書式を設定するための値に設定します。
#include <locale.h>struct lconv *localeconv (void);
localeconv関数は, <locale.h>ヘッダ・ファイルに定義されている lconv構造体へのポインタを返します。この構造体は,プログラムから変更してはなりません。これは localeconvの呼び出しか,LC_NUMERIC,LC_MONETARY,または LC_ALL カテゴリを変更する setlocale関数の呼び出しによって上書きされます。この構造体のメンバは以下のとおりです。
メンバ 説明 char *decimal_point 基数文字。 char *thousands_sep 桁のグループを区切るために使用される文字。 char *grouping 非金額値の桁をどのようにグループ化するかを定義する文字列。 char *int_curr_symbol 国際通貨シンボル。 char *currency_symbol ローカル通貨シンボル。 char *mon_decimal_point 金額値の書式に使用される基数文字。 char *mon_thousands_sep 金額値の桁のグループを区切るために使用される文字。 char *mon_grouping 金額値の桁をどのようにグループ化するかを定義する文字列。 char *positive_sign 負でない金額値を示すために使用される文字列。 char *negative_sign 負の金額値を示すために使用される文字列。 char int_frac_digits 国際通貨シンボルでフォーマットされた金額値の中の基数文字の後に表示される桁数。 char frac_digits 金額値の中の基数文字の後に表示される桁数。 char p_cs_precedes 正の金額値で,ローカルまたは国際通貨シンボルが数字の前に置かれる場合には 1 に,シンボルが数字の後に置かれる場合には 0 に設定される。 char p_sep_by_space 正の金額値で,通貨シンボルと数字の間にスペースがない場合には 0 に設定される。スペースがある場合には 1 に,シンボルと符号文字列の間にスペースがある場合には 2 に設定される。 char n_cs_precedes 負の金額値で,ローカルまたは国際通貨シンボルが数字の前に置かれる場合には 1 に,シンボルが数字の後に置かれる場合には 0 に設定される。 char n_sep_by_space 負の金額値で,通貨シンボルと数字の間にスペースがない場合には 0 に設定される。スペースがある場合には 1 に,シンボルと符号文字列の間にスペースがある場合には 2 に設定される。 char p_sign_posn 負でない金額で, positive_sign 文字列をどこに置くかを指定するために使用される整数。 char n_sign_posn 負の金額で, negative_sign 文字列をどこに置くかを指定するために使用される整数。
char* 型の構造体のメンバは文字列へのポインタであり,そのうちの (decimal_point を除く) 任意のものが "" をポイントすることができます。これは,対応する値が現在のロケールでは使用できないか,長さゼロであることを示します。 char型の構造体のメンバは正の数値で,そのうちの任意のものが CHAR_MAX になることができます。これは,対応する値が現在のロケールでは使用できないことを示します。 CHAR_MAX は <limits.h>ヘッダ・ファイルに定義されています。
<limits.h>ヘッダの中の CHAR_MAX マクロの値は,プログラムが/UNSIGNED_CHAR 修飾子を付けてコンパイルされたかどうかに依存することに注意してください。
- CHAR_MAX マクロを,現在のロケールで使用できない値を示すために使用するのは,プログラムが /UNSIGNED_CHAR なしでコンパイルされた場合に限られる ( デフォルトは /NOUNSIGNED_CHAR)。
- プログラムが /UNSIGNED_CHAR を指定してコンパイルされた場合には, CHAR_MAX マクロの代わりに SCHAR_MAX マクロを使用する。
/NOUNSIGNED_CHAR モードでは,CHAR_MAX と SCHAR_MAX の値は同じです。このため,SCHAR_MAX との比較では,どちらの /[NO]UNSIGNED_CHAR モードを使用しているかにかかわらず,正しい結果が得られます。
メンバ grouping と mon_grouping は,数値をフォーマットするときの,個々の桁のグループのサイズを定義する文字列をポイントします。個々のグループ・サイズはセミコロン (;) によって区切られます。たとえば,grouping が文字列 5;3 をポイントしており, thousands_sep 文字がコンマ (,) ならば,数値 123450000 は 1,234,50000 にフォーマットされます。
grouping と mon_grouping の要素は,次のように解釈されます。
値 解釈 CHAR_MAX それ以上のグループ化は行われない。 0 残りの桁については,直前の要素を繰り返し使用する。 その他 整数値は,現在のグループを構成する桁の数である。現在のグループの前に,次の要素を調べて,次の桁グループのサイズが決定される。
p_sign_posn と n_sign_posn の値は,次のように解釈されます。
値 解釈 0 数値と通貨シンボルは括弧で囲まれる。 1 符号文字列は数値と通貨シンボルの前に置かれる。 2 符号文字列は数値と通貨シンボルの後に置かれる。 3 符号文字列は数値と通貨シンボルの直前に置かれる。 4 符号文字列は数値と通貨シンボルの直後に置かれる。
x lconv 構造体へのポインタ。
#include <stdlib.h> #include <stdio.h> #include <limits.h> #include <locale.h> #include <string.h> /* The following test program will set up the British English */ /* locale, and then extract the International Currency symbol */ /* and the International Fractional Digits fields for this */ /* locale and print them. */ int main() { /* Declare variables */ char *return_val; struct lconv *lconv_ptr; /* Load a locale */ return_val = (char *) setlocale(LC_ALL, "en_GB.iso8859-1"); /* Did the locale load successfully? */ if (return_val == NULL) { /* It failed to load the locale */ printf("ERROR : The locale is unknown"); exit(EXIT_FAILURE); } /* Get the lconv structure from the locale */ lconv_ptr = (struct lconv *) localeconv(); /* Compare the international currency symbol string with an */ /* empty string. If they are equal, then the international */ /* currency symbol is not defined in the locale. */ if (strcmp(lconv_ptr->int_curr_symbol, "")) { printf("International Currency Symbol = %s\n", lconv_ptr->int_curr_symbol); } else { printf("International Currency Symbol ="); printf("[Not available in this locale]\n"); } /* Compare International Fractional Digits with CHAR_MAX. */ /* If they are equal, then International Fractional Digits */ /* are not defined in this locale. */ if ((unsigned char) (lconv_ptr->int_frac_digits) != CHAR_MAX) { printf("International Fractional Digits = %d\n", lconv_ptr->int_frac_digits); } else { printf("International Fractional Digits ="); printf("[Not available in this locale]\n"); } }
前へ 次へ 目次 索引