8

割り当てにソケットを使用して単純なファイルサーバーを作成しています。接続の受け入れを開始する前に、要求されたディレクトリにサーバーが書き込めることを確認する必要があります。

これを行う簡単な方法の 1 つは、ファイルを作成してからすぐに削除し、それが失敗した場合はエラーになることです。しかし、ファイルが既に存在する場合はどうなるでしょうか。プログラムがクラッシュしたり、途中で終了したりしますか? それに加えて、少し乱雑に見え、エレガントではありません。

厳密に言えば、コードは、マーカーがテストする Ubuntu システムでのみ機能する必要があります。したがって、stat() コマンドを実行して、現在の uid と gid を取得し、ファイルの状態に対して手動でアクセス許可を確認できます。しかし、私はむしろこれをポータブルな方法で行いたいのですが、これは面倒です..

これを行う簡単なC標準的な方法はありますか?

4

2 に答える 2

6

はい、動作します。

#include <unistd.h>
#include <stdbool.h>

bool is_folder_writable(char* str) {
    if(access(str, W_OK) == 0) {
        return true;
    } else {
        return false;   
    }
}
于 2013-10-25T20:11:58.147 に答える