常见linux问题定位

msgsnd的Resource temporarily unavailable问题定位

 

msgsnd() Resource temporarily unavailable

 Resource temporarily unavailable 为资源不可用错误,

1、 一个进程 msgsnd (非阻塞方式)另外一个进程msgrcv

msgrcv进程接收到消息后退出,msgsnd一直发送消息 ,消息队列满 而又没有读取导致的。

2、msgsnd发送msg的每个参数都要赋值

 

解决办法:tar: Exiting with failure status due to previous

今天进行解压DM3730_DVSDK安装包的时候,我直接用的解压命令 tar -jxvf .... 然而到最后出现了解压错误tar: Exiting with failure status due to previous error 
原来是我没有加sudo 导致出现了这个错误,解决办法就是,加上sudo tar -jxvf 安装包。 
 

Text file busy解决方法

在使用scp复制开发机上面编译好的模块到测试机上时,出现了Text file busy的错误。

经过检查发现由于是直接覆盖原来的模块,而原来的模块此时仍然处于运行状态,因此才会发生上述错误。

解决方法是kill掉运行的模块,再执行scp覆盖就不会报错了。

自己又再做了几个实验:

(1)先rm删除正在运行的test,然后cp test2 test就没有错误了。

(2)先mv改名正在运行的test,然后cp test2 test也没有问题。

查了查资料并动手分析了一下,找到了比较满意的解释。cp并不改变目标文件的inode,事实上它的实现是这样的: # strace cp test2 test 2&1 | grep open.*test open("test2", O_RDONLY|O_LARGEFILE) = 3 Linux由于Demand Paging机制的关系,必须确保正在运行中的程序镜像(注意,并非文件本身)不被意外修改,因此内核在启动程序后会锁定这个程序镜像的inode。这就是为什么cp在用“O_WRONLY|O_TRUNC”模式open目标文件时会失败。而先rm再cp的话,新文件的inode其实已经改变了,原inode并没有被真正删除,直到内核释放对它的引用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值