2

私のプログラムは、TCP ソケットを介して実行可能なバイナリ ファイルを受け取ります。

このファイルを実行可能プログラムとしてハードディスクに保存する必要があります。ファイルは正常に受信されましたが、問題はデフォルトのファイル属性が実行不可に設定されていることです。

UbuntuのCでファイルの属性を実行可能として変更するには?

ありがとう、よろしく、ロボ

4

3 に答える 3

6

どうint chmod(const char *path, mode_t mode)ですかint fchmod(int fd, mode_t mode) ?

apropos chmod
man 2 chmod

最も基本的な例:

#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[]){

   char * fpath = "/path/to/binary";
   int ret=0;
   if(ret = chmod(fpath, S_IRUSR|S_IXUSR) < 0){
      perror("chmod failed");
      exit(1);
   }

   printf("chmod ok\n");
   exit(0);
}
于 2012-05-26T04:33:24.330 に答える
3

ファイルの作成と書き込みはどのように行っていますか? 実行可能になることがわかっている場合は、最初に正しいモードでファイルを作成してください。

int fd = open("path/to/file", O_WRONLY | O_CREAT, 0777);

が実行可能ビットを削除しない限りumask(一般的な値は00220002で、実行可能ビットをそのままにします)、path/to/file最初は実行可能に作成されます。

于 2012-05-26T05:09:58.647 に答える
2

でファイルモードを変更できますchmod。詳細については、manページ(man 2 chmod)をお読みください(シェルコマンドとほぼ同じchmodです)。

于 2012-05-26T04:32:39.803 に答える