LINUX给进程内容窗口改名的代码
LINUX进程名,初步看有两种:
- ps看到的名
- 图形进程名?在任务栏上显示和分组用到。
前后对比:
- 改名之前的显示
- 改名之后的显示
- 具体代码
#include <stdio.h>
#include <gtk/gtk.h>
#include <stdlib.h>
#include <sys/prctl.h>#define WINDOW_WIDTH 500
#define WINDOW_HEIGHT 300#define WINDOW_BG_COLOR_R 0x0000
#define WINDOW_BG_COLOR_G 0x0000
#define WINDOW_BG_COLOR_B 0xFFFF#define WINDOW_TITLE "泰山Office"/*创建示例窗口*/
static void start_window()
{GtkWidget *window;GdkColor color;window = gtk_window_new( GTK_WINDOW_TOPLEVEL);gtk_window_set_position( GTK_WINDOW(window), GTK_WIN_POS_CENTER);gtk_window_set_default_size(GTK_WINDOW(window), WINDOW_WIDTH, WINDOW_HEIGHT);gtk_window_set_title( GTK_WINDOW(window), WINDOW_TITLE);color.red = WINDOW_BG_COLOR_R;color.green = WINDOW_BG_COLOR_G;color.blue = WINDOW_BG_COLOR_B; gtk_widget_modify_bg(window, GTK_STATE_NORMAL, &color);g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(gtk_main_quit), NULL);gtk_widget_show(window);
}static void setName4TaskBar(int argc, char **argv, const char *title)
{
#if 1strcpy(argv[0], title);
#else//从代码分析来看,可以直接修改char* pLast;char* pFirst;size_t size = 0;pLast = argv[0];for (int i = 0; i<argc; ++i) {pLast = argv[i] + strlen(argv[i]) + 1;}pLast += strlen(pLast);pFirst = argv[0];argv[1] = NULL;memset( pFirst, 0x00, pLast - pFirst);strncpy(pFirst, title, pLast - pFirst);
#endif
}static void setNameForPsCommand(const char* pName)
{prctl(PR_SET_NAME, pName);
}int main(int argc,char *argv[])
{for (int i = 0; i<argc; ++i){printf("%d=%s\n", i, argv[i]);} //在任务栏上分组用到setName4TaskBar(argc, argv, "Office 4 TaskBar");//运行程序,另起一个终端,使用ps -a就可以看到这个。setNameForPsCommand("Office 4 ps");gtk_init(NULL, NULL);start_window();gtk_main();return 0;
}
- 编译脚本
#!/bin/bashCOMPILE_INCLUDE=${COMPILE_INCLUDE}" -I/usr/include/gtk-2.0"
COMPILE_INCLUDE=${COMPILE_INCLUDE}" -I/usr/include/glib-2.0"
COMPILE_INCLUDE=${COMPILE_INCLUDE}" -I/usr/include/pango-1.0"
COMPILE_INCLUDE=${COMPILE_INCLUDE}" -I/usr/include/cairo"
COMPILE_INCLUDE=${COMPILE_INCLUDE}" -I/usr/include/gdk-pixbuf-2.0"
COMPILE_INCLUDE=${COMPILE_INCLUDE}" -I/usr/include/atk-1.0"
COMPILE_INCLUDE=${COMPILE_INCLUDE}" -I/usr/include/harfbuzz"COMPILE_INCLUDE=${COMPILE_INCLUDE}" -I/usr/lib/x86_64-linux-gnu/glib-2.0/include"
COMPILE_INCLUDE=${COMPILE_INCLUDE}" -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include"COMPILE_LINK=${COMPILE_LINK}" -lgobject-2.0 -lgtk-x11-2.0"OUTPUT_FILE=test
if [ -f ${OUTPUT_FILE} ]; thenrm ${OUTPUT_FILE}
fi
echo ${COMPILE_INCLUDE_LINK}
gcc \-o ${OUTPUT_FILE} \gtk.cpp \${COMPILE_INCLUDE} \${COMPILE_LINK}
LINUX给进程内容窗口改名的代码相关推荐
- linux 查看进程数据段,如何读取Linux进程中的代码段和数据段
Linux下的程序的文件格式是ELF,里面分了各种段,有代码段.数据段.等.当运行这个程序时,系统也会给这个进程创建虚拟内存,然后把ELF中的数据分别加载到内存中的对应位置.本文整理了用cpp程序读取 ...
- linux下进程的创建代码,伪代码说明Linux进程创建过程
http://blog.csdn.net/hongmy525/archive/2007/11/11/1879026.aspx 以前单知道linux创建进程用的fork函数,深一点点知道是调用sys_f ...
- 【Linux】进程等待wait/waitpid status详解 (非)阻塞等待(代码)
文章目录 进程等待原因 进程等待方法 wait waitpid 获取子进程status (非)阻塞等待 进程的非阻塞等待方式代码 进程的阻塞等待方式代码 进程等待原因 fork创建了子进程,子进程帮父 ...
- 深入理解Linux守护进程
深入理解Linux守护进程Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台的守护进程(daem ...
- Linux下进程隐藏的常见手法及侦测手段
痕迹清理 1. 退出前 history -c 2. 多使用sftp吧 0.0 3. web日志删除一些 4. 用户目录下很多 history,一言不合就是删 :) 4. btmp wtmp ...
- linux下进程调度算法实验,Linux下进程调度算法的模拟实现.doc
Linux下进程调度算法的模拟实现 枣 庄 学 院 信息科学与工程学院课程设计任务书 题目: Linux下进程调度算法的模拟实现 学 生1: 学 生2: 学 生3: 专 业: 计算机应用技术 课 程: ...
- linux sleeping进程多_一文掌握Linux实战技能系统管理篇
linux 安装包-yum 的使用 linux 进程管理 ps pstree top 指令的使用 linux 进程之间的通信 linux 守护进程 linux 内存以及硬盘使用查看 linux 防火墙 ...
- 初识linux之进程
目录 一.冯诺依曼体系结构 1.冯诺依曼体系结构的五大构成 (1)存储器 (2)输入设备和输出设备 (3)运算器和控制器 2.CPU执行 (1)CPU数据来源 (2)内存.CPU和磁盘的数据交换 3. ...
- Linux(进程概念详解)
进程是如今编程领域非常重要的一个概念,进程是比较抽象的,不容易直接理解.因为进程与操作系统息息相关,因此在介绍进程之前,笔者打算先简易讲一下操作系统的工作流程,理解操作系统是如何管理软件和硬件的,然后 ...
- linux排查进程退出原因面试,linux面试中经常会遇到的问题
Linux 面试题答案解析 1.绝对路径用什么符号表示?当前目录.上层目录用什么表示?主目录用什么表示? 切换目录用什么命令? 答案: 绝对路径: 如/etc/init.d 当前目录和上层目录: ./ ...
最新文章
- Image转Base64镶嵌网页中
- 最简单的一个java驱动jdbc链接mysql数据库
- 【springBoot】注解的详解
- MYSQL在Windows 7下迁移安装路径教程
- IOS学习笔记04---编写第一个C语言程序-Hello World
- 吴恩达机器学习 11.聚类
- ernie和Bert的参数理解
- UVa 12333 - Revenge of Fibonacci manweifc(模拟加法竖式 字典树)
- 开源自动化运维工具_批量与重复运维压力如何破?了解一下这款自动化运维工具...
- pandas操作手册
- FMCW雷达测速和测距原理介绍
- 远程桌面无法复制粘贴传输文件解决办法
- GNSS数据处理(一)——开源GNSS数据处理软件介绍
- 电影《道士下山》主创亮相 董琦:转身遇贵人
- 一份热乎乎的字节面试真题
- Spring+SpringMVC+Mybatis(开发必备技能)04、mybatis自动生成mapper_dao_model(包含工具与视频讲解) 纯绿色版本、配套使用视频,100%运行成功
- 我转行程序员的那一年(一)
- js数组操作(pop,push,unshift,splice,shift方法)
- 功能强大的黑科技APP,各种免费资源一应俱全!
- 苹果照片未删却不见了_删掉的照片怎样找回?教你打开手机这个功能,可以立马恢复...
热门文章
- android消息发送字符串,Android aSmack-如何对文件发送进行自定义消息...
- thinkphp5 mysql加1_ThinkPHP5.1的数据库链接和增删改查
- kettle使用数据库来生成序列_kettle 生成 ktr
- 唯有自己变得强大_强大自己!(经典)
- 三条中线分的六个三角形_数学中三角形的“五心”你会了吗?教你马上学会。(中考生必看)...
- java遍历d盘所有文件夹_java遍历指定盘符的所有文件和文件夹
- linux对硬盘进行分区吗,linux对4T硬盘进行分区
- PPT双屏抽奖,大气,能Hold住全场!与其它PPT内容可融为一体,实现无缝切换!
- SQL夯实基础(九)MySQL联接查询算法
- 七十三、分发系统介绍、expect脚本远程登录、expect脚本远程执行命令、expect传递参数...