サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2024年ランキング
www.c-lang.net
abs関数、labs関数、fabs関数は、数値の絶対値を求めます。それぞれの相違は引数と戻り値の型名が違うだけです。 #include <stdlib.h> int abs(int x); long int labs(long int x); double fabs(double x); プログラム 例 #include <stdio.h> #include <stdlib.h> int main(void) { int loop_cnt; int x; for (loop_cnt = 1; loop_cnt <= 5; ++loop_cnt) { printf('整数を入力してください ==> '); scanf('%d', &x); printf('%dの絶対値%d\n', x, abs(x)); } return 0; }
第2引数の*sighandlerにSIG_IGNを指定した場合は、signumに指定したシグナルを無視し、SIG_DFLを指定した場合は、デフォルトの動作を行います。また、シグナル処理関数のアドレスを指定した場合は、signumを引数としてシグナル処理関数を呼び出します。 シグナル処理関数を実行すると、登録はリセットされますので、同じ処理を行いたい場合はsignal関数を再度実行する必要があります。また、SIGKILLとSIGSTOPシグナルは捕捉できませんし、無視することもできません。 次の例題プログラムはSIGINTシグナル(CtrlキーとCキーを同時に押下することにより発生)を3回発行すると終了します。 プログラム 例 #include <stdio.h> #include <stdlib.h> #include <signal.h> /* ユーザ定義関数の宣言 */ void Se
この投稿はパスワードで保護されているためページの概要を表示できません。
wait関数は、呼び出し元プロセスの子プロセスの状態変化を待ちます。子プロセスの状態変化がすでに発生していた場合は、wait関数はすぐに復帰します。それ以外の場合は、子プロセスの状態変化が起こるか、シグナルハンドラによりシステムコールが中断されるまで呼び出し元プロセスは停止します。 なお、ここでの状態変化には、次のような事があります。 子プロセスの終了。 シグナルによる子プロセスの停止。 シグナルによる子プロセスの再開。 この関数は、C言語のライブラリ関数(標準関数)ではありませんので、コンパイラにより、使えない場合があります。 *statusは子プロセスからの終了ステータスを格納する変数を指定します。なお、終了ステータスが不要な場合は、NULLを指定できます。 戻り値として、処理が成功した場合は、子プロセスのプロセスIDが、失敗した場合は-1を返します。 終了ステータスはexit関数の引
chmod関数は、ファイルやディレクトリ(フォルダ)のアクセス許可情報(パーミッション)を変更します。なお、この機能を使うには、実行プロセスがアクセス許可情報を変更できる権限を持っていることが必要です。 この関数は、C言語のライブラリ関数(標準関数)ではありませんので、コンパイラにより、使えない場合があります。
mkdir関数は、ディレクトリ(フォルダ)を作成します。 この関数は、C言語のライブラリ関数(標準関数)ではありませんので、コンパイラにより、使えない場合があります。 *pathnameは作成するディレクトリをパス名で指定します。 modeはディレクトリのアクセス許可情報(パーミッション)を指定します。 戻り値として、処理が成功した場合は0が、エラーの場合は-1を返します。 第2引数のmodeについては、chmod関数をご覧ください。ただし、ここで指定した許可情報がそのまま付与されるわけではなく、実際の許可情報は mode & ~umask & 0777 となります。 次の例題プログラムでは、許可情報として0777(rwxrwxrwx)を指定していますが、umask値が0022のため、実際に付与される許可情報は0755(rwxr-xr-x)になっています。 プログラム 例 #include
setitimer関数はインターバル・タイマーの設定を行い、getitimer関数はインターバル・タイマーの値の取得を行います。 システムは1つのプロセスにつき3個のインターバル・タイマーを提供し、それぞれのタイマーは別々の時間種別で減少します。どのタイマーも満了する(0になる)とプロセスにシグナルを送り、(設定によっては)再び開始します。 この関数は、C言語のライブラリ関数(標準関数)ではありませんので、コンパイラにより、使えない場合があります。 #include <sys/time.h> int getitimer(int which, struct itimerval *gvalue); int setitimer(int which, const struct itimerval *svalue, struct itimerval *ovalue); whichはタイマーの種類を指
stat関数は、ファイルやディレクトリの状態を取得します。 この関数は、C言語のライブラリ関数(標準関数)ではありませんので、コンパイラにより、使えない場合があります。
semop関数は、セマフォの操作(ロック/アンロック)を行ないます。セマフォとは、元々は「手旗信号」の意味で、それから派生した鉄道の腕木信号に由来します。これにより、プロセス間の待ち合わせと排他制御を行うことができます。 セマフォを操作する関数にはsemop関数以外に、semget関数とsemctl関数があります。なお、セマフォの操作手順についてはsemget関数をご覧ください。 ここではセマフォによる、2つのプロセスの待ち合わせと、3つ以上のプロセスの待ち合わせ及び、排他制御の手順を説明します。なお、ロックとはプロセスを休眠状態(停止)にする操作で、アンロックとはプロセスを目覚めさせる操作です。 2つのプロセスの待ち合わせは、次の手順でセマフォ操作を行います。 セマフォを2つ用意して、両方共、0で初期化します。 それぞれのプロセスは、自分のセマフォを決めます。例えば、プロセスAはセマフォ
shmget関数、shmat関数、shmdt関数、shmctl関数は、共有メモリの操作を行ないます。共有メモリとは、システムが管理しているメモリの一部を共有して、複数のプロセスがプロセス間通信を行う技法です。複数のプロセスが共有しますので、プロセス間の待ち合わせや排他制御が必要な場合がありますが、その場合はセマフォを使用するとよいでしょう。 共有メモリは、次の手順で操作します。 shmget関数で共有メモリ・セグメントの識別子(セグメントID)を取得します。なお、共有メモリ・セグメントは新規作成もできます。 それぞれのプロセスは、shmat関数で自プロセスのアドレス空間に共有メモリ・セグメントを付加(アタッチ)します。これで、共有メモリへのデータの読み書きが可能になります。 それぞれのプロセスで共有メモリが不要になったら、shmdt関数で自プロセスのアドレス空間に配置された共有メモリ・セグ
このページを最初にブックマークしてみませんか?
『C言語入門講座 – C言語入門講座。関数、サンプル集を参考にして、 C言語をマスター...』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く