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 ...
随机推荐
- 2018 Multi-University Training Contest 1 - D Distinct Values (STL+双指针)
题意:数量为N的序列,给定M个区间,要求对每个区间Li,Ri,都有al..r (l≤i<j≤r), ai≠aj.构造这个序列使其字典序最小. 分析:如果对于每个所给区间都暴力扫一遍,1e5的数据 ...
- centos7 firewall开放查看关闭端口
查看所有打开的端口: firewall-cmd --zone=public --list-ports 添加 firewall-cmd --zone=public --add-port=80/tcp - ...
- oracle 任务使用
文章访问地址:http://www.cnblogs.com/hoojo/p/oracle_procedure_job_interval.html
- mysql的常用语句
Mysql的常用语句 -- 创建表 create table tableName( id int primary key, name varchar(20) ) -- 查询 select * from ...
- 黑苹果Yosemite 10.10.1懒人版完美安装及简单驱动设置
1.硬件概要 CPU: 英特尔 Xeon E3-1230 V2 (四核)主板: 技嘉 H77-DS3H (Intel H77 (Panther Point Base))内存: 8 GBytes显卡: ...
- 源码编译配置lnmp部署zabbix
环境说明: [root@wcy ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@wcy ~]# uname -a Linux ...
- Spring boot 与mybatis 多数据源问题
https://www.cnblogs.com/ityouknow/p/6102399.html Spring Boot 集成Mybatis实现多数据源 https://blog.csdn.net/m ...
- tyvj 1091 等差数列 dp
P1091 等差数列 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 广东汕头聿怀初中 Train#3 Problem 3 描述 等差数列的定义是一个数列S, ...
- 带你彻底明白 Android Studio 打包混淆
前言 在使用Android Studio混淆打包时,该IDE自身集成了Java语言的ProGuard作为压缩,优化和混淆工具,配合Gradle构建工具使用很简单.只需要在工程应用目录的gradle文件 ...
- 51nod-1385-贪心-构造
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1385 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 ...