学习笔记:linuxc第六章上

  1. 利用chmod函数实现自己简化版chmod命令时所需要注意的问题:利用chmod 函数实现chmod命令修改一个文件权限时需要输入其权限对应的数字。此时输入的数字是字符型的(即字符串),需要把它转换为八进制整数。首先我们先把这个字符串转换为十进制数,可以调用atoi函数,然后再把十进制整数转换为八进制整数 。
    例如,设置一个文件的访问权限为:_wx_wx____,那么它对应的八进制数就是330。输入设置权限字符串330,然后转换为十进制整数330,即:把原来的八进制数330扩大为八进制数512。现将十进制数330转换为八进制数330,即再缩小同样倍数:5*8*8+1*8+2=330(八进制),这样,就把一个字符串330转换成八进制330。当然,也可以在宏之间取或运算而不用进制转换。
  2. stderr 输出到屏幕。
    perror函数是将输入的一些信息和【现在的】errno所对应的错误一起输出到标准设备(stderr)。
  3. memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体数组进行清零操作的一种最快方法。
  4. _ _LINE_ _是预编译器内置宏表示行数,注意形式。O_RDONLY ,O_WRONLY, O_RDWR(只读,只写,读写)用%d形式输出时分别为0,1,2;故可以用掩码O_ACCMODE(即:3)和fcntl函数返回值进行运算,从而判断文件打开方式。
  5. 文件锁设置时,步骤为:检查能否设置锁——设置锁——释放锁。单个进程在同一字节上只能设置一种锁,新的锁会取代旧的锁。锁的不兼容性是针对多个进程之间的。
  6. 注意if, if 和if,else if的使用方法。因为如果第一个if成立,随着if语句的执行,可能会影响后面if条件的判断。例如:
/*例1*/
int func()
{                     
    int i=2;
    if(i<3){
       i=4;
    }
    if(i>3){
       i=2;
    }
    return i;
}

/*例2*/
int func()
{                     
    int i=2;
    if(i<3){
       i=4;
    }
    else if(i>3){
       i=2;
    }
    return i;
}

显然,两个例子结果不同 。两个例子中i>3 和i<3看似都互不相干,但是例1中在执行第一个if语句时已经改变了i的值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值