debug.c

来自「一个收集所有最基本功能的函数库;所有的函数都是尽量短小和简单 使用 doxyge」· C语言 代码 · 共 69 行

C
69
字号
/*************************************************************************** *            debug.c * *  Mon May 21 18:06:46 2007 *  Copyright  2007  kf701 *  Email <kf701.ye AT gmail.com> ****************************************************************************//* *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */#include <libgen.h>#include <stdarg.h>    #include <time.h>    #include <sys/types.h>#include <sys/stat.h>#include <syslog.h>#include "kf701.h"/** * @brief print and syslog routine * * Action as printf when run on fg * else as syslog when bg */int sys_message(const char *fmt, ...) {	va_list ap;	char buf[128] , fd_path[64] , name[64];	pid_t my_pid = getpid();		sprintf(fd_path,"/proc/%d/exe",my_pid);	bzero(name,sizeof(name));	readlink( fd_path, name , sizeof(name) );	memmove( name , basename(name) , strlen(basename(name))+1 );		sprintf ( fd_path , "/proc/%d/fd/0" , my_pid);	if ( readlink(fd_path,buf,sizeof(buf)) > 0 )	{				if ( NULL == strstr(buf ,"/dev/null") )		{            			printf("%s: ", name); 			va_start(ap,fmt);			vprintf(fmt,ap);			va_end(ap);				return 0;		}	}	va_start(ap,fmt);	vsnprintf(buf , sizeof(buf), fmt , ap );	va_end(ap);	syslog( LOG_DEBUG, "%s", buf );	return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?