C99に対応した標準Cライブラリの実装レポートを行っていきます。

プロフィール 

高木信尚

Author:高木信尚

ホームページ
ブログ

最近の記事 

最近のコメント 

最近のトラックバック 

月別アーカイブ 

カテゴリー 

ブロとも申請フォーム 

この人とブロともになる

ホーム 全記事一覧 << 前の記事 次の記事 >>

 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--/--/-- --:--|スポンサー広告

 

多くの処理系では、system関数を使うと子プロセスを呼び出すことができるので、system関数は子プロセスを呼び出すための関数だと勘違いされている方も多いようです。実際には、system関数はコマンドプロセッサを呼び出すためのものです。

コマンドプロセッサというのは、普通はシェルと呼ばれることが多いと思います。Unixではshですし、Windowsではcommand.comやcmd.exeがこれに当たります。今回の実行環境では、コマンドプロセッサに相当するものは存在しません。

system関数の引数にNULLを渡すと、コマンドプロセッサを利用できるかどうかを調べることができます。非0が返ると使用可、0が返ると使用不可です。そして、引数にNULL以外を渡すと、処理系定義の値が返ってきます。多くの場合、ここで子プロセスの終了コードが返ってくるわけです。

今回の実装では、面倒なので、system関数は常に0を返すことにしてもよいのですが、誤使用に備えて、NULLを渡したときには0を、NULL以外を渡したときはEXIT_FAILUREを返すようにします。

#include <stdlib.h>

int system(const char *s)
{
  return s == NULL ? 0 : EXIT_FAILURE;
}

この関数も、規格の要求を満たすためだけのものですが、コマンドプロセッサを自作する場合には、実際にそれを呼び出すようにしてもよいでしょう。
スポンサーサイト
2006/06/02 10:55|一般ユーティリティTB:0CM:0

コメント
コメントの投稿

管理者にだけ表示を許可する


トラックバック
トラックバックURLはこちら
http://libc.blog47.fc2.com/tb.php/65-9b1bf848

ホーム 全記事一覧 << 前の記事 次の記事 >>

ブログ内検索 

お勧め書籍 

RSSフィード 

リンク 

このブログをリンクに追加する

Copyright(C) 2006 TAKAGI Nobuhisa All rights reserved.
Powered by FC2ブログ. template designed by 遥かなるわらしべ長者への挑戦.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。