cygwinでC言語を勉強しています。
そして昨日system関数の存在を知ったのでこんなプログラムを書いて見ました。
#include <stdio.h>
#include <stdlib.h>
main()
{
system("pwd");
system("cd ..");
system("pwd");
}
すると、結果は
/home/prg/
/home/prg/
となりました。"cd .."を実行しているのですから
/home/prg/
/home/
とならないのはなぜでしょうか?
どうしても、わかりません。どうかよろしくお願いします。
No.2ベストアンサー
- 回答日時:
system関数は「子シェル」を呼び出して(起動して)処理を行います。
処理が終ると、起動された子シェルはアンロードされ、起動時に設定されたカレントディレクトリ、環境変数、メモリも一緒に消えて無くなります。
子シェルが起動される時のカレントディレクトリは毎回同じ(親プロセスのカレントディレクトリを毎回引き継ぐ)ですから、system関数を呼ぶ度に、毎回同じディレクトリがカレントディレクトリになります。
何故なら、system関数を発行した親プロセス、呼ばれた子シェルは、それぞれ「自分のカレントディレクトリ」を持っているので、子シェルの中で cd .. を実行しても、親プロセスのカレントディレクトリは影響を受けません。
その為、一回目のsystem("pwd");と二回目のsystem("pwd");では、同じ結果になります。
詳しい説明ありがとうございます。
毎回実行した結果が消されてるとは思いませんでした。
では、popenを使えば
pwd
cd ..
pwd
としたときに結果が反映されますか?
No.3
- 回答日時:
>#pwd
>#cd ..
>#pwd
>をプログラムでやるにはどうしたよいのでしょうか?
以下のように、セミコロンで区切るとできます。
system("pwd ; cd .. ; pwd");
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ビデオカード・サウンドカード DellのPC(xp)に、サウンドカードドライバ(内蔵)をインストールしたい。 1 2023/07/31 11:32
- UNIX・Linux AWSのEC2のZabbixユーザーでawscliコマンドが実行できない状態を解決する 1 2022/12/06 22:17
- Windows 10 VirtualBox 7のゲストOSでの物理HDDパーティションのマウント方法 2 2023/05/04 13:01
- 英語 下記の英文の日本語訳をお願いします。 1 2023/03/02 10:01
- 英語 『G19 Gen5 MOS - Modular Optic System for Gen5』 の 『 1 2023/03/05 13:37
- 英語 下記の英文を日本語に訳して、その意味を教えてください。 1 2023/03/09 14:13
- 英語 Modular Optic System (MOS)とは、一体どの様な物の事なのかを教えてください。 1 2023/03/03 09:52
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- C言語・C++・C# PC画面を録画するプログラムでdllの読み込みエラー 1 2023/04/22 08:31
- 英語 It has an extremely popular e-mail system, reporte 1 2022/11/04 19:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチスクリプト処理でエラー...
-
VBでExcelが起動されているか知...
-
外部プログラムの実行について
-
Linux環境変数設定(putenv?se...
-
デーモンプロセスの起動について
-
apache2.2が起動せず困っていま...
-
.cshrcでのエラー
-
バッチファイル内置換
-
CSHが使えない REDHAT
-
コマンドプロンプトの危険性を...
-
CPUとOS の違いは?
-
OS インストール場所確認
-
cygwinでno such file or direc...
-
InstallShield って何?
-
OpenLDAPでのユーザ一覧表示
-
累積動作時間とはなんですか?
-
aptでインストールしたプログラ...
-
IE8でIE6エミュレートができま...
-
Xserverを停止したいが、gdmが...
-
KDEからGNOMEへ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチスクリプト処理でエラー...
-
バッチファイルで多重起動を防ぐ
-
VBでExcelが起動されているか知...
-
Linux環境変数設定(putenv?se...
-
CreateProcessでうまくexeファ...
-
コンソールアプリの起動結果待...
-
デーモンプロセスの起動について
-
「応答なし」の状態を監視する方法
-
Httpステータス500 InternalSer...
-
Open Office Org 急に起動しな...
-
MySQLへのDB::connectで、faile...
-
shell関数について
-
CPUの使用率が100%から戻りま...
-
PostgreSQLについて
-
ASP.NET 2.0(VB)からEXCELオブ...
-
_access関数が EACCES エラーと...
-
仮想メモリ増加
-
mysqldのCPU消費時間がどんどん...
-
XDRIVEのログインをSENDKEYで自...
-
telnetを抜けても、プロ...
おすすめ情報