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ランキング
-
バッチスクリプト処理でエラー...
-
バッチファイルで多重起動を防ぐ
-
_access関数が EACCES エラーと...
-
RTOS(TOPPERS)プログラムで、動...
-
「応答なし」の状態を監視する方法
-
ソフトのインストール場所って...
-
誰かにサーバにあるデータを消...
-
大塚商会で新しくシステム、ス...
-
aptでインストールしたプログラ...
-
rshについて
-
Macの手書き漢字入力ツールにつ...
-
ご教授願います PC初心者です。...
-
exeファイルの実行結果をテキス...
-
パソコン初心者です。 職場のパ...
-
mac os 10.6の入ったMac mini ...
-
ubuntuに外部侵入できるか
-
scriptコマンドで出力したログ...
-
CPUとOS の違いは?
-
CSHが使えない REDHAT
-
proftpdをアンインストールしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチスクリプト処理でエラー...
-
VBでExcelが起動されているか知...
-
バッチファイルで多重起動を防ぐ
-
Linux環境変数設定(putenv?se...
-
デーモンプロセスの起動について
-
コンソールアプリの起動結果待...
-
「応答なし」の状態を監視する方法
-
起動したIEのウインドウタイ...
-
MySQLへのDB::connectで、faile...
-
コンソールアプリケーションの...
-
system関数について
-
メッセージボックスの回避につ...
-
CreateProcessでコンソールアプ...
-
VB6 二重起動確実防止について
-
ASP.NET 2.0(VB)からEXCELオブ...
-
CreateProcessでうまくexeファ...
-
外部プロセス起動時に発生する...
-
_access関数が EACCES エラーと...
-
shell関数について
-
Httpステータス500 InternalSer...
おすすめ情報