#include <unistd.h>
int access(const char *pathname, int mode);
作用:检查调用该函数的进程是否可以对指定的文件执行某种操作。
第一个形参:文件名;第二个形参:R_OK(是否可读)、W_OK(是否可写)、X_OK(是否可执行)、F_OK(文件是否存在);返回值:0表示拥有所查的权限(即符合该权限)、-1(未通过所查询的权限或者发生了其它错误,详情看perror和errno)。
//代码
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>int main(int argc, char* argv[])
{if(argc < 2){printf("a.out filename\n");exit(1);}int ret = access(argv[1], W_OK);if(ret == -1){perror("access");exit(1);}printf("you can write this file.\n");return 0;
}
#include <stdlib.h>
long int strtol(const char *str, char **endptr, int base);
作用:strtol函数会将参数 str 字符串根据参数 base 来转换成长整型数(long)。参数 base 范围从2至36,或0。参数base 代表 str 采用的进制方式,如base 值为10则采用10进制,若base 值为16则采用16进制等。strtol函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等),直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时('\0')结束转换,并将结果返回。
当base的值为0时,默认采用 10 进制转换,但如果遇到 '0x' / '0X' 前置字符(指str)则会使用 16进制转换,遇到'0'前置字符(指str)则会使用8进制转换。
若endptr不为NULL,则会将遇到的不符合条件而终止的字符指针由endptr传回;若 endptr为NULL,则表示该参数无效,或不使用该参数。(一般使用时,直接指定其为NULL就好)
参数说明:str 为要转换的字符串,endptr 为第一个不能转换的字符的指针(字符串),base为字符串str所采用的进制。