设置C中的执行位

Mil*_*ays 0 c

我正在编写一个程序,要求我使用标准fopen fprintf fclose调用创建一个文件.

我想设置执行位.

我可以这样做,chmod但这似乎有点矫枉过正.对于我的生活(可能由于年事已高),我似乎无法找到(或记住)API来执行此操作.

Ste*_*itt 6

fchmod(2)将与您的其他调用保持一致...给定一个文件描述符fd:

struct stat buf;
fstat(fd, &buf);
fchmod(fd, buf.st_mode | S_IXUSR | S_IXGRP | S_IXOTH);
Run Code Online (Sandbox Code Playgroud)

将所有三个执行位添加到文件的当前模式(作为读者练习留下的错误处理).

您将使用fileno(3)FILE *结构中获取文件描述符.或者,您可以使用chmod(2)并传递文件名.

  • 我在想"与`chmod(2)`相反,它是基于文件名的".如果你已经打开了文件,你也可以使用文件描述符,即使这涉及到`fileno(3)`. (2认同)