linux C使用strerror来追查错误信息
最近工作中有个需求:程序将文件进行处理,然后将处理完毕的文件挪走。我用了rename函数来挪动文件,可是在docker化的环境中,文件却无法挪动。不知道什么原因。现在,对程序进行调整,如果rename来挪动文件失败,那么打印错误信息,同时使用另外一个办法将其挪走。以下是简化后的代码。
这个程序演示了rename(),strerror(),system()函数的用法。
备考:
#include <stdlib.h>
#include <stdio.h>
#include <errno.h> int main(int argc, char ** argv)
{
printf("process begin at [%p]\n", (void *)&main); if(argc != 3)
{
printf("parameter error! \n usage: \t %s old_fileName new_fileName\n", argv[0]);
return 1;
} extern int errno; if(rename(argv[1], argv[2]))
{
printf("%s:%s:%d:|errno is [%d] msg is [%s]\n",__FILE__, __FUNCTION__,__LINE__,errno, strerror(errno)); char cmd[1000] = {0};
sprintf(cmd,"%s %s %s", "mv",argv[1], argv[2]);
system(cmd);
}
else
{
printf("%s:%s:%d:|mv: from [%s] to [%s] ok\n",__FILE__, __FUNCTION__,__LINE__,argv[1], argv[2]);
} return 0;
}
正常的程序,打印的日志为:
process begin at [0x4006b0]
renamefile.c:main:27:|mv: from [renametest] to [renametest2] ok
docker化的程序,打印的日志为:
fileRename|DCCalcFmtBase.cpp|errno is [18] msg is [Invalid cross-device link]
docker化的程序,就算有上面的错误提示,也会使用system函数,去调用mv将文件挪走。
上面的日志,实际上,我是用两个程序去测试得到的不同的分支的提示。
linux C使用strerror来追查错误信息的更多相关文章
- linux服务器无法显示tomcat详细错误信息
严重: One or more listeners failed to start. Full details will be found in the appropriate container l ...
- Linux bash 中,如何将正常信息和错误信息输出到文件
问题描述: $ command 2>> error $ command 1>> output 是否有方法,在bash同一行,实现输出stderr到error文件,输出stdou ...
- Linux提供两个格式化错误信息的函数
#include “stdio.h” Void perror(__const char *__s); 其中__s是出现错误的地方,函数向标准错误输出设备输出如下:s:错误的详细信息. Eg.perro ...
- C++输出错误信息perror、strerror以及全局变量errno
头文件:#include<stdio.h>函数:perror.strerror,全局变量:errno.使用方法: FILE *fp; if((fp = fopen("test.t ...
- 【C/C++】Linux下system()函数引发的错误
http://my.oschina.net/renhc/blog/54582 [C/C++]Linux下system()函数引发的错误 恋恋美食 恋恋美食 发布时间: 2012/04/21 11:3 ...
- 聊聊、Nginx 初始化错误信息
这篇文章我们继续学习 main 方法,我们先来看看 ngx_debug_init() 这个方法. 从方法名我们也知道,debug初始化.我们先看看方法位置在哪.我们来断点在这个方法上面. Functi ...
- php 错误信息配置
display_errors = on/off错误回显,一般常用语开发模式,但是很多应用在正式环境中也忘记了关闭此选项.错误回显可以暴露出非常多的敏感信息,为攻击者下一步攻击提供便利.推荐关闭此选项. ...
- Linux 如何使用gdb 查看core堆栈信息
转载:http://blog.csdn.net/mergerly/article/details/41994207 core dump 一般是在segmentation fault(段错误)的情况下产 ...
- linux系统/var/log目录下的信息详解
一./var目录 /var 所有服务的登录的文件或错误信息文件(LOG FILES)都在/var/log下,此外,一些数据库如MySQL则在/var/lib下,还有,用户未读的邮件的默认存放地点为/v ...
随机推荐
- Silverlight中获取控件中子控件
如题:,直接来看代码: /// <summary> /// 查找并返回第一个 相同 name的子元素 /// </summary> /// <typeparam name ...
- E-R图和数据库的设计
数据库设计: 原则:如果属性有了多个字段,可以当实体.如果只有一个字段,只能当属性(比如实体属性种类) 1.设计E-R图 实体:矩形 关系:菱形 属性:椭圆(可省) 2.关系的类型 一对一 一对多 多 ...
- 剑指offer编程题66道题 36-66
36.两个链表的第一个公共节点 题目描述 输入两个链表,找出它们的第一个公共结点. 1.具有重合节点的两个链表是一个Y字性,用两个堆栈放这两个链表,从尾部开始遍历,直到遍历到最后一个重合节点. 这种算 ...
- form前台提交List<Object>对象以及后台处理
页面: <form method="post" action="test.do" id="form"> <input ty ...
- python继承,判断类型,多态
1.python中继承 如果已经定义了Person类,需要定义新的Student和Teacher类时,可以直接从Person类继承: class Person(object): def __init_ ...
- 20145219 《Java程序设计》第02周学习总结
20145219 <Java程序设计>第02周学习总结 教材学习内容总结 类型:基本类型.类类型(参考类型) 基本类型: 整数:short占2字节,int占4字节,long占8字节 字节: ...
- 《Python学习手册》(三)
string 字符串,和列表.元组,都适用序列操作. 关于python转义字符 迭代 for x in S: print(x) [c * 2 for c in S] Comparasion: > ...
- NiceFish的ERROR in AppModule is not an NgModule问题
大漠老师的angular2新手教程项目,nicefish刚开始下下来运行ng serve --prod --aot 是 出现ERROR in AppModule is not an NgModule ...
- python下的复杂网络编程包networkx的使用(摘抄)
原文:http://blog.sciencenet.cn/home.php?mod=space&uid=404069&do=blog&classid=141080&vi ...
- yii2:模块
yii2:模块 模块不同于frontend/frontback单独的前后台单独的主题项目,模块不能单独部署,必须属于某个应用主体(如前后台:frontend/frontback). 模块置于modul ...