shao的专栏

阅读通信设备监控程序的一些杂记,不舍得扔,记录下来!

_exit()与exit的区别:头文件:exit:#include<stdlib.h>_exit:#include<unistd.h>_exit()函数:直接使进程停止运行,清除其使用的内存空间,并销毁其在内核中的各种数据结构;exit()函数则在这些基础上作了一些包装,在执行退出之前加了若干道工序。exit()函数与_exit()函数最大的区别就在于 exit()函数在调用_exit() 系统调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件。exit(0)表示进程正常退出,不为0表示异常退出。strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为’\0’的数组元素。而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。char str[20]="0123456789";int a=strlen(str); //a=10;int b=sizeof(str); //而b=20;int *p;sizof(p)的值是4.setbuf(stdout,NULL);禁止标准输出的缓冲

#include <iostream>#include<fstream>int main(int argc, char* argv[]){char* outbuf = new char [100];setbuf(stdout,outbuf);//将输出流绑定到outbuf上puts("helloworld\n");//内容输入到outbuf内//setbuf(stdout,NULL);//如果启用这行代码,输出流恢复原来的状态,puts输出到控制台delete[] outbuf;system("pause");return 0;}softdog分析softdog.c–>int main( int argc, char *argv[] )–>All_Init();–>获取模块配置文件名称(依赖模块的ID获得资源的名称)GetResNameByModuleID( RID_FILE_MODULE_CONF, MID_SOFT_DOG, FileName, sizeof( FileName ) ) ) != RST_SUCCESS )int GetResName( const int AResID, char *ABuff, const int ABuffLen )获得资源(配置文件)的名字int GetProgramAbsolutePath( char *AAbsPath, const int AAbsPathLen )获得程序的绝对路径在/src/common/commutils/filenamingintf.c中定义。||–>获取日志配置 这一过程建立在上一步获取的配置文件的名称filenameReadLogConfig( FileName, &logConfig )从配置文件中读取日志配置到logconfig结构体变量中。#define LOG_CONFIG_SECTION "LogConfig" // 日志配置的段名–>打开日志(读取配置, 创建输出队列和输出线程,输出线程是负责将日志信息输出到控制台和文件,实现:void *OutputThread(void *argument))OpenLog( MODULE_NAME_SOFT_DOG, &logConfig )pthread_mutex_init(&s_ExitMutex, NULL);pthread_mutex_lock(&s_ExitMutex);pthread_mutex_unlock(&s_ExitMutex);有关线程锁的操作,,用于线程之间访问共享文件时的互斥操作。RegThread( pthread_self(), THREAD_NAME_MAIN_THREAD ) //将线程(这里是主线程)的名称ID号信息记录在一个结构体数组中。不是系统调用。总结1,在All_Init();完成的工作如下:1,获取各个模块的配置文件名称和文件路径;2,获取模块配置文件中的有关日志配置的信息,存放在logconfig结构体变量中。3,打开日志,读取logconfig日志配置, 创建输出队列和输出线程,输出线程是负责将日志信息输出到控制台和文件。4,注册线程信息,获取应用程序的路径。

sed -i ‘/^0x0102=/r log.ini’ Desktop/Release/app/config/dev/A09B4000/repparamsconf.ini这个命令可以直接在原来的文件下面添加一行

① char *strcpy(s,ct)//将字符串包括\0复制到字符串s中,并返回s。② void *memset(void*s,int ch ,size_t n)//将s中的前n个字节用ch代替并返回s。作用:将一段内存块中填充某个给定的值 ,常用于对较大的结构体和数组进行清零操作。如: memset(keyValue, 0, sizeof(keyValue));//将数组清零。③fork()④execl(ProgramFile, ProgramFile, "", NULL)fork的作用是根据一个现有的进程复制出一个新进程,原来的进程称为父进程(Parent Process),新进程称为子进程(ChildProcess)。在Shell下输入命令可以运行一个程序,是因为Shell进程在读取用户输入的命令之后会调用fork复制出一个新的Shell进程,然后新的Shell进程调用exec执行新的程序。⑤exit(EXIT_FAILURE);⑥sprintf( ABuff, "%s/%s%s", s_Path, MODULE_NAME_SOFT_DOG, FILE_POSTFIX_CONFIG );⑦pthread_t pthread_self(void);函数作用:获得线程自身的ID。pthread_t的类型为unsigned long int,所以在打印的时候要使用%lu方式,否则将产生神奇的结果⑧ // 创建消息队列 s_ctrlQueueId = msgget(s_ctrlQueueKey, IPC_CREAT | 0666);

会让你的心态更平和更坦然,也会让你心无旁骛,更会让你的心灵得到解脱和抚慰。

shao的专栏

相关文章:

你感兴趣的文章:

标签云: