0

Unix マシンのソケットを介して最小限の端末シェル プログラムを実行しようとしています。使っsystem("cd directory")たらダメ。chdir()それで私は少し調査をして、それがうまくいくように見えた に出くわしました。しかし、試してみると、毎回エラーが発生しました。これが私のコードです:

if (chdir(argument) < 0) {
     send(sock, "[*] Directory does not exits!\n", strlen("[*] Directory does not exits!\n"), 0);
}
else {
    string argumentString(argument);
    string entireMessage = "[*] New working directory: " + argumentString;
    char entireMessageChar[64];
    int i;
    for (i = 0; entireMessage[i] != '\0'; i++) {
        entireMessageChar[i] = entireMessage[i];
    }
    send(sock, &entireMessage, strlen(entireMessageChar), 0);
}

chdir()ディレクトリを変更しない理由を誰か教えてください。ありがとう。

4

1 に答える 1

2

errnoafter has exitedの値をchdir()チェックして、なぜ機能しないのかを判断する必要があります。

可能性のある終了ステータスの値は次のとおりです。

  • EACCESS (ターゲットに対する権限なし)
  • ENOENT (ファイルが存在しない)
  • ENOTDIR (ターゲットはファイルであり、ディレクトリではありません)。

完全なリストについては、オペレーティング システムの実装に関するドキュメントを確認してください。

于 2013-08-07T18:22:54.560 に答える