スポンサード リンク

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサード リンク
-- : -- : -- | スポンサー広告 | page top↑
スポンサード リンク

system関数:新しいプロセスの作成

#include <stdlib.h>

int system(const char *command);

system関数は引数commandに指定されたコマンドを新しいシェルを起動して実行します。
つまり、次のシェルコマンドと同じはたらきをします。

$ sh -c command

Linuxプログラミング―例題で学ぶUNIXプログラミング環境のすべて」を読んでいたらわかりやすいサンプルプログラムが載っていたので、それを参考に記事を書いてみました。

Linuxプログラミング―例題で学ぶUNIXプログラミング環境のすべてニール マシュー リチャード ストーンズ Neil Matthew

ソフトバンククリエイティブ 2004-08
売り上げランキング : 83480
おすすめ平均star


Amazonで詳しく見る
by G-Tools

まず、前提知識としてUNIXのpsコマンドを説明します。
ps(process status)コマンドは実行中のプロセスの状態を表示します。
以下に出力例を示します。シェルbashとエディタemacs、そして自分自身psが表示されています。

****@ubuntu-vm:~/work/os$ ps
  PID TTY          TIME CMD
11588 pts/0    00:00:04 bash
14487 pts/0    00:00:21 emacs
14900 pts/0    00:00:00 ps

前述のsh -cコマンドからpsを起動すると次のようになります。
psコマンドで表示された3つのプロセスに加え、sh自身も表示されています。

****@ubuntu-vm:~/work/os$ sh -c ps
  PID TTY          TIME CMD
11588 pts/0    00:00:04 bash
14487 pts/0    00:00:21 emacs
14950 pts/0    00:00:00 sh
14951 pts/0    00:00:00 ps

では、system関数でpsを実行してみましょう。簡単なプログラムを作りました。

#include <stdio.h>
#include <stdlib.h>

int main() {
	printf("Running ps with system\n");
	system("ps");
	printf("Done.\n")
	return 0;
}

このプログラムの実行結果は以下のとおりです。sh -c psで出力されたプロセスに加え、このプログラムsystem_ps自身も表示されています。

****@ubuntu-vm:~/work/os$ ./system_ps
Running ps with system
  PID TTY          TIME CMD
11588 pts/0    00:00:04 bash
14487 pts/0    00:00:21 emacs
14896 pts/0    00:00:00 system_ps
14897 pts/0    00:00:00 sh
14898 pts/0    00:00:00 ps
Done.

「まず、前提知識として・・・」と書きましたが、実はこのエントリ全体が次回のエントリのための前提知識になっています。次回のエントリではexec族の関数を説明する予定です。冒頭で述べた「わかりやすい」はこの流れあってのものなのです。

<次回のエントリ>
exec族の関数:プロセスの変身


スポンサード リンク

テーマ:プログラミング - ジャンル:コンピュータ - ソーシャルブックマーク: この記事をクリップ! Yahoo!ブックマークに登録

15 : 18 : 18 | プログラミング-UNIX | トラックバック(0) | コメント(0) | page top↑
<<2つの窓口に2列で並ぶより1列で並んだ方が待ち時間は短い | ホーム | 歴史的PIアドレス>>
コメント

コメントの投稿














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

トラックバック
トラックバックURL
http://networkprogramming.blog18.fc2.com/tb.php/40-96b42970
この記事にトラックバックする(FC2ブログユーザー)
| ホーム |

プロフィール

TBVector

Author:TBVector

プロフィール

メールフォーム

記事検索

Google

最近の記事

人気の記事

過去の記事

カテゴリー

タグランキング

リンク

最近のコメント

最近のトラックバック

アクセスカウンタ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。