2011-01-04 10 views
0

私はいくつかのUnixには、次のようなコードで自分のアプリケーションからのコマンドを実行するシステムを()を使用しています:rmResultがゼロであるとRMの作品が、私はコンソールでこのエラーを取得しながら、しかしなぜsystem()はcwdが不明であると不平を言うのですか?

std::stringstream command; 

command << "rm -rf /some/directory"; 

int rmResult = system(command.str().c_str()); 

if (rmResult != 0) { 
    clog << "Error: Failed to remove old output directory '" << command.str() 
     << "' (" << errno << ") " << strerror(errno) << ".\n"; 
    throw; 
} 

shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory 

私は間違っていますが、どうすればこのメッセージが消えますか?

+0

なぜあなたは最初にそのようにしていますか?ディレクトリとその内容をホースするためにネイティブの構造を使用するだけではどうですか? – richo

+0

私はいろいろなコマンドを実行しているので、system()を使うほうが簡単だったようです。 – WilliamKF

+3

シェルをスクリプト化する場合は、シェルスクリプトを使用してみませんか? – dreamlax

答えて

2

明らかに、これは現在の作業ディレクトリではないのに、私のpushdスタックに入ったディレクトリがあるためです。今削除されたディレクトリのスタックを削除すると、メッセージが消えてしまいました。

+0

ええ、私はこの前にこの奇妙なことを見ました。そして、私が特定のシェルを使用するときにのみ起こるようです。 IIRC、これはbashで私のために起こったが、tcshでは起こらなかった。 – Tim

+0

@Tim私はbashにいるので、あなたの思い出を裏付けるようです。 – WilliamKF

関連する問題