在Ubuntu中用C创建一个文件作为可执行程序

时间:2012-05-26 04:27:27

标签: c++ c linux ubuntu

我的程序通过TCP套接字接收可执行的二进制文件。

我需要将此文件作为可执行程序保存到硬盘中。文件已成功接收,但问题是默认文件属性被设置为不可执行。

如何在Ubuntu中将文件的属性更改为C中的可执行文件?

谢谢你, 问候, ROBO

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:3)

您是如何创建和编写文件的?如果您知道它将是可执行的,那么只需首先使用正确的模式创建文件。

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

除非umask正在剥离可执行位(公共值为00220002,这使得可执行位单独存在),否则path/to/file将最初创建为可执行。

答案 2 :(得分:2)

您可以使用chmod更改文件模式。阅读手册页(man 2 chmod)了解详细信息(与shell命令chmod大致相同)。