|
はじめまして、みずやといいます。
UNIX環境でcdコマンドと同じ働きをするプログラムを作成しよう
としているのですが、どうもchdir関数が上手く働かないのでどなたか
原因のわかる方、どうか教えてください。
私が作成したプログラムは、こんな感じです(短くするためにエラー処理
は省いてます)
#------------------------------------------------------------------
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main( int argc , char *argv[] )
{
/*引数がなければホームディレクトリに移動*/
if( argc == 1 )
chdir( getenv( "HOME" ) ) ;
else
/*第1引数のディレクトリに移動*/
chdir( argv[1] ) ;
return 0 ;
}
#----------------------------------------------------------------
自分ではこれで問題ないように思って実行したのですが、プログラムが
終了した時点でまったくカレントディレクトリが移動されていませんで
した。
ちなみにプログラム開始直後と終了直前にgetcwdでカレントディレク
トリを取得して表示させてみたのですが、その出力では正しくカレント
ディレクトリは移動していました。
なのに、プログラムが終了するとそのままなんです。
いったいなにがいけないのでしょうか?
|