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.3
- 回答日時:
>#pwd
>#cd ..
>#pwd
>をプログラムでやるにはどうしたよいのでしょうか?
以下のように、セミコロンで区切るとできます。
system("pwd ; cd .. ; pwd");
No.2ベストアンサー
- 回答日時:
system関数は「子シェル」を呼び出して(起動して)処理を行います。
処理が終ると、起動された子シェルはアンロードされ、起動時に設定されたカレントディレクトリ、環境変数、メモリも一緒に消えて無くなります。
子シェルが起動される時のカレントディレクトリは毎回同じ(親プロセスのカレントディレクトリを毎回引き継ぐ)ですから、system関数を呼ぶ度に、毎回同じディレクトリがカレントディレクトリになります。
何故なら、system関数を発行した親プロセス、呼ばれた子シェルは、それぞれ「自分のカレントディレクトリ」を持っているので、子シェルの中で cd .. を実行しても、親プロセスのカレントディレクトリは影響を受けません。
その為、一回目のsystem("pwd");と二回目のsystem("pwd");では、同じ結果になります。
詳しい説明ありがとうございます。
毎回実行した結果が消されてるとは思いませんでした。
では、popenを使えば
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ランキング
-
バッチスクリプト処理でエラー...
-
バッチファイルで多重起動を防ぐ
-
MySQLへのDB::connectで、faile...
-
_access関数が EACCES エラーと...
-
コンソールアプリの起動結果待...
-
VBでExcelが起動されているか知...
-
Linux環境変数設定(putenv?se...
-
dsmoveコマンドをBATファイルで...
-
".bashrc" E509: バックアップ...
-
CSHが使えない REDHAT
-
ソースコードからインストール...
-
aptでインストールしたプログラ...
-
PowerShellで自分が書いたコマ...
-
誰かにサーバにあるデータを消...
-
バッチファイルでのスペースの入力
-
ソフトのインストール場所って...
-
エクセルVBA 実行時エラー 5029...
-
.cshrcでのエラー
-
OS インストール場所確認
-
scriptコマンドで出力したログ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチスクリプト処理でエラー...
-
バッチファイルで多重起動を防ぐ
-
VBでExcelが起動されているか知...
-
Linux環境変数設定(putenv?se...
-
コンソールアプリの起動結果待...
-
「応答なし」の状態を監視する方法
-
_access関数が EACCES エラーと...
-
Open Office Org 急に起動しな...
-
VBを用いてログオフから自動で...
-
起動したIEのウインドウタイ...
-
OLEサーバコンポーネントを作っ...
-
MySQLへのDB::connectで、faile...
-
ASP.NET 2.0(VB)からEXCELオブ...
-
CreateProcessでコンソールアプ...
-
プリンタの状態を知る方法
-
RTOS(TOPPERS)プログラムで、動...
-
VB6 二重起動確実防止について
-
system関数について
-
デーモンプロセスの起動について
-
仮想メモリ増加
おすすめ情報