Chinaunix首页 | 论坛 | 博客
  • 博客访问: 102442
  • 博文数量: 23
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-22 10:44
文章分类

全部博文(23)

文章存档

2018年(3)

2017年(1)

2015年(1)

2014年(18)

我的朋友

分类: C/C++

2014-08-12 16:24:24

在嵌入式编程中通常在编写log文件时,需要获取本进程名称或路径写入log文件

//获取进程的名称

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <unistd.h>

  5. int main(int argc , char **argv)
  6. {
  7.     char szlink[255], szpath[255];

  8.     sprintf(szlink, "/proc/%d/exe", getpid());    
  9.     
  10.     int ret;
  11.     ret = readlink(szlink, szpath, sizeof(szpath));//获取文件路径
  12.     if(ret < 0)
  13.         return-1;
  14.     else
  15.     {
  16.         printf("szpath:%s, len :%d\n", szpath, ret);    
  17.     }    

  18.     char *path_tmp;

  19.     path_end = strrchr(szpath, '/');
  20.     if(path_end == NULL)
  21.         return -1;
  22.     else
  23.         printf("path_tmp: %s \n",path_tmp);

  24.     char *name = path_tmp + 1;
  25.     printf("this process name is : %s in FUNCTION: %s\n", name, __func__);//打印此进程名称和所在的函数名称
  26.     return 1;
  27. }
此程序是获取所在进程的名称,在写代码考虑到所有进程的适用性,就可以使用此方法将所在进程的名称获取。是个不错的选择哦!

//获取进程所在的全路径

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <unistd.h>

  5. int main()
  6. {
  7.     char szlink[255], szpath[255];

  8.     sprintf(szlink, "/proc/%d/exe", getpid());    
  9.     
  10.     int ret;
  11.     ret = readlink(szlink, szpath, sizeof(szpath));
  12.     if(ret < 0)
  13.         return-1;
  14.     else
  15.     {
  16.         printf("szpath:%s, len :%d\n", szpath, ret);    
  17.     }    

  18.     char *path_tmp;

  19.     path_end = strrchr(szpath, '/');
  20.     if(path_end == NULL)
  21.         return -1;
  22.     else
  23.         printf("pathend : %s szpath:%s, leftlen:%d \n",path_tmp,szpath, path_tmp - szpath);


  24.     char path[255] = {0};
  25.     strncpy(path, szpath, path_tmp - szpath);
  26.      printf("this process path is : %s in FUNCTION: %s\n", path, __func__);//打印此进程所在路径和所在的函数名称
  27.     return 1;
  28. }

提供一个简单的方法,在log文件中可以用到哦,就是打印log文件时,有此进程的文件名和路径哦!


阅读(1661) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~