1

C プログラムの chdir() に問題があります - Linux で実行している場合のみです (Mac では正常に動作します)。コードを削除しました。

このようなものはうまくいきます:

chdir("/Documents");

しかし、それを変数として渡そうとすると、うまくいきません。

char *home_directory;
home_directory = malloc(80);
chdir(home_directory);

ホーム ディレクトリは、コード内の別の場所にあるファイルから読み取られます。必要に応じて、それを行った方法を投稿できます。

ありがとう。

4

3 に答える 3

7

ファイルから読み取っhome_directoryているので、パラメーターとして使用する前に、末尾の改行やその他の偽の文字を削除するのを忘れていませchdirんか?

于 2011-11-10T00:58:18.960 に答える
2

次のように、いくつかのエラー チェックを実行してみてください。

char *home_directory;
home_directory = malloc(80);
/* ...fill the home directory... */
if (chdir(home_directory) == -1)
   perror("chdir");

.. そしてman chdiryo でエラーコードの意味を調べることができます。

于 2011-11-10T00:52:38.610 に答える
1

は Linux のシステム コールであるため、プログラムをchdir使用するだけで、straceプログラムが実際に何を行っているかを確認できます。これでは、コード内でエラーを前もって処理する必要がなくなりません。明らかに。プログラムが実行するアクションを追跡するのに役立ちます。

于 2011-11-10T01:03:17.383 に答える