- 浏览: 1477099 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (691)
- linux (207)
- shell (33)
- java (42)
- 其他 (22)
- javascript (33)
- cloud (16)
- python (33)
- c (48)
- sql (12)
- 工具 (6)
- 缓存 (16)
- ubuntu (7)
- perl (3)
- lua (2)
- 超级有用 (2)
- 服务器 (2)
- mac (22)
- nginx (34)
- php (2)
- 内核 (2)
- gdb (13)
- ICTCLAS (2)
- mac android (0)
- unix (1)
- android (1)
- vim (1)
- epoll (1)
- ios (21)
- mysql (3)
- systemtap (1)
- 算法 (2)
- 汇编 (2)
- arm (3)
- 我的数据结构 (8)
- websocket (12)
- hadoop (5)
- thrift (2)
- hbase (1)
- graphviz (1)
- redis (1)
- raspberry (2)
- qemu (31)
- opencv (4)
- socket (1)
- opengl (1)
- ibeacons (1)
- emacs (6)
- openstack (24)
- docker (1)
- webrtc (11)
- angularjs (2)
- neutron (23)
- jslinux (18)
- 网络 (13)
- tap (9)
- tensorflow (8)
- nlu (4)
- asm.js (5)
- sip (3)
- xl2tp (5)
- conda (1)
- emscripten (6)
- ffmpeg (10)
- srt (1)
- wasm (5)
- bert (3)
- kaldi (4)
- 知识图谱 (1)
最新评论
-
wahahachuang8:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
websocket的helloworld -
q114687576:
http://www.blue-zero.com/WebSoc ...
websocket的helloworld -
zhaoyanzimm:
感谢您的分享,给我提供了很大的帮助,在使用过程中发现了一个问题 ...
nginx的helloworld模块的helloworld -
haoningabc:
leebyte 写道太NB了,期待早日用上Killinux!么 ...
qemu+emacs+gdb调试内核 -
leebyte:
太NB了,期待早日用上Killinux!
qemu+emacs+gdb调试内核
prctl给线程命名和线程的一些操作
注意这里命名线程名称为xx
编译并运行:
gcc prctl.c -l pthread
./a.out
在另一个终端,通过ps找到a.out的pid:
看命名是否奏效:
两个task的名字都是a.out
看线程名字用,线程的名字“xx”在这
[root@killinux 9764]# ps -L -p 9764
PID LWP TTY TIME CMD
9764 9764 pts/2 00:00:00 a.out
9764 9765 pts/2 00:00:00 xx
[root@killinux 9764]#
-----------------------------------------------------------
stat文件和status文件中也有
[root@killinux 9764]# cat stat
9764 (a.out) S 8870 9764 8870 34818 9764 4202496 172 0 0 0 0 0 0 0 20 0 2 0 176577389 16850944 136 18446744073709551615 4194304 4196556 140734883346416 140734883346080 255523324077 0 0 0 0 18446744071579515721 0 0 17 3 0 0 0 0 0
[root@killinux 9764]# cd -
/proc/9764/task
[root@killinux task]# cd -
/proc/9764/task/9764
[root@killinux 9764]# cd ../9765/
[root@killinux 9765]# cat stat
9765 (xx) S 8870 9764 8870 34818 9764 4202560 17 0 0 0 0 0 0 0 20 0 2 0 176577389 16850944 136 18446744073709551615 4194304 4196556 140734883346416 140599854898320 255519799581 0 0 0 0 18446744071579464804 0 0 -1 0 0 0 0 0 0
[root@killinux 9765]# cat status
Name: xx
State: S (sleeping)
Tgid: 9764
Pid: 9765
PPid: 8870
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
Utrace: 0
FDSize: 256
Groups: 0
VmPeak: 16456 kB
VmSize: 16456 kB
VmLck: 0 kB
VmHWM: 544 kB
VmRSS: 544 kB
VmData: 10440 kB
VmStk: 88 kB
VmExe: 4 kB
VmLib: 1792 kB
VmPTE: 44 kB
VmSwap: 0 kB
Threads: 2
SigQ: 1/62815
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 0000000180000000
CapInh: 0000000000000000
CapPrm: ffffffffffffffff
参考
http://www.cnblogs.com/sunyubo/archive/2010/12/10/2282086.html
这个头文件不全
注意这里命名线程名称为xx
#include <stdlib.h> #include <stdio.h> #include <pthread.h> #include <sys/prctl.h> void* test(void *arg) { char name[32]; prctl(PR_SET_NAME, (unsigned long)"xx"); prctl(PR_GET_NAME, (unsigned long)name); printf("%s/n", name); while (1) sleep(1); } int main(void) { pthread_t tid; pthread_create(&tid, NULL, test, NULL); pthread_join(tid, NULL); return 0; }
编译并运行:
gcc prctl.c -l pthread
./a.out
在另一个终端,通过ps找到a.out的pid:
[root@killinux ~]# ps -ef|grep a.ou root 9764 8870 0 12:43 pts/2 00:00:00 ./a.out root 9768 9747 0 12:43 pts/4 00:00:00 grep a.ou [root@killinux ~]# cd /proc/9764 [root@killinux 9764]# cd task/ [root@killinux task]# ls 9764 9765 [root@killinux task]# pwd /proc/9764/task [root@killinux task]# cd 9765/ [root@killinux 9765]# ls attr clear_refs cwd fd limits mem numa_maps oom_score_adj root sessionid stat syscall auxv cmdline environ fdinfo loginuid mountinfo oom_adj pagemap sched smaps statm wchan cgroup cpuset exe io maps mounts oom_score personality schedstat stack status [root@killinux 9765]# cat cmdline ./a.out[root@killinux 9765]#
看命名是否奏效:
两个task的名字都是a.out
看线程名字用,线程的名字“xx”在这
[root@killinux 9764]# ps -L -p 9764
PID LWP TTY TIME CMD
9764 9764 pts/2 00:00:00 a.out
9764 9765 pts/2 00:00:00 xx
[root@killinux 9764]#
-----------------------------------------------------------
stat文件和status文件中也有
[root@killinux 9764]# cat stat
9764 (a.out) S 8870 9764 8870 34818 9764 4202496 172 0 0 0 0 0 0 0 20 0 2 0 176577389 16850944 136 18446744073709551615 4194304 4196556 140734883346416 140734883346080 255523324077 0 0 0 0 18446744071579515721 0 0 17 3 0 0 0 0 0
[root@killinux 9764]# cd -
/proc/9764/task
[root@killinux task]# cd -
/proc/9764/task/9764
[root@killinux 9764]# cd ../9765/
[root@killinux 9765]# cat stat
9765 (xx) S 8870 9764 8870 34818 9764 4202560 17 0 0 0 0 0 0 0 20 0 2 0 176577389 16850944 136 18446744073709551615 4194304 4196556 140734883346416 140599854898320 255519799581 0 0 0 0 18446744071579464804 0 0 -1 0 0 0 0 0 0
[root@killinux 9765]# cat status
Name: xx
State: S (sleeping)
Tgid: 9764
Pid: 9765
PPid: 8870
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
Utrace: 0
FDSize: 256
Groups: 0
VmPeak: 16456 kB
VmSize: 16456 kB
VmLck: 0 kB
VmHWM: 544 kB
VmRSS: 544 kB
VmData: 10440 kB
VmStk: 88 kB
VmExe: 4 kB
VmLib: 1792 kB
VmPTE: 44 kB
VmSwap: 0 kB
Threads: 2
SigQ: 1/62815
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 0000000180000000
CapInh: 0000000000000000
CapPrm: ffffffffffffffff
参考
http://www.cnblogs.com/sunyubo/archive/2010/12/10/2282086.html
这个头文件不全
发表评论
-
xl2tp 备份
2019-09-24 16:25 6912019年9月24日更新: 注意,需要开启firewall ... -
sdl笔记
2019-01-31 17:19 732sdl教程教程 https://github.com/Twin ... -
tinyemu
2019-01-24 17:59 1432参考https://bellard.org/jslinux/t ... -
aws搭建xl2tp给iphone使用
2018-12-26 21:37 18922019年12月26日 可以参考原来的配置 https:// ... -
consul的基本使用
2017-06-27 11:13 1399### 安装 [centos7上consul的安装](ht ... -
lvs的helloworld
2017-06-13 20:36 596###################lvs######### ... -
系统调用的helloworld
2017-05-04 16:14 632《2.6内核标准教程》 p293 #include < ... -
bitcoin和cgminer的安装
2017-04-05 22:45 1958参考 http://blog.csdn.net/rion_ch ... -
ceph安装和常用命令
2017-03-21 21:55 953/etc/hosts ssh-keygen ssh-copy- ... -
mobile terminal 笔记
2016-12-02 15:35 624找出旧的iphone4 越狱之后可以变个小操作系统 mobi ... -
socket基础和select(python)
2016-06-14 17:21 1801上接 c语言的socket基础ht ... -
socket基础(c语言)
2016-06-14 16:45 994不使用select 普通的基础socket连接,对多个客户端的 ... -
ffmpeg+nginx 的直播(2,直播摄像头和麦克风)
2016-05-28 20:21 4358假设我的服务器是centos7 192.168.139.117 ... -
ffmpeg+nginx 的直播(1,直播播放的视频文件)
2016-05-26 17:11 659264位操作系统centos7 ############ 1.一 ... -
socat和netcat(nc)
2016-04-29 22:36 1742转 原文链接: http://www.wenquan.name ... -
neutron基础九(qemu nat网络)
2016-02-06 17:21 1621接上基础八,kvm透传nested忽略 1.在主机ce ... -
neutron基础八(qemu 桥接网络)
2016-02-06 13:13 1542qemu的桥接和nat的qemu启动命令是一样的,但是后续的脚 ... -
neutron基础七(qemu tap)
2016-02-02 17:02 1030使用qemu 建立个虚拟机 然后用tap设备, 根据基础六,t ... -
neutron基础六(bridge fdb)
2016-01-28 18:30 2263转发表 在三台机器上建立三个namespace 192.16 ... -
南北流量
2016-01-23 23:26 1824一、三层网络架构: 接入层:负责服务器的接入和隔离 汇聚层:汇 ...
相关推荐
1. **获取Perl RPM包**:在有网络的环境中,你可以通过`yum download`命令或访问官方或第三方RPM存储库下载Perl的RPM包。确保下载与你的CentOS版本兼容的版本。 2. **传输RPM包**:将下载的Perl RPM包通过USB驱动器...
../configure --prefix=/usr/glibc2.25 -I../include/ -include../include/unistd.h -include../include/prctl.h ``` 这些参数确保configure脚本能在正确的目录中查找头文件。 #### 五、注意事项 - 在进行任何...
需要python3 , python-prctl , python-dbus和bluez 安装 如果已将其打包以用于其他Disto,请打开一个问题或PR,以便可以将说明添加到此列表中。 Arch Linux 从安装AUR软件包 使用sudo systemctl enable bluetooth...
- **返回值**:成功时不返回,失败时返回-1。 - **用途**:替换当前进程的映像,用于执行新的程序。 **exit** - **功能**:中止进程。 - **参数**:退出状态码。 - **返回值**:无。 - **用途**:正常结束进程。 *...
如果失败,则返回-1并设置errno。 **exit** - **功能**: 终止进程。这是进程正常结束的标准方式。 - **返回值**: 不会返回给调用者。该进程的状态信息(退出状态)会传递给父进程。 **_exit** - **功能**: 立即...
1. **Seccomp基础知识**: - Seccomp是一种内核级别的安全特性,它允许程序设定一个“过滤器”,这个过滤器会检查每个系统调用,只有符合规则的调用才会被执行。 - 它最初是为了解决安全性和性能问题,尤其是对于...
`prctl()`定义在`<sys/prctl.h>`头文件中,其基本用法如下: ```cpp #include <sys/prctl.h> #include void set_thread_name(const std::string& name) { pid_t tid = syscall(SYS_gettid); // 获取当前线程...
# prctl -n project.max-shm-memory -v 4gb -r -i project group.dba # projmod -s "project.max-shm-memory=(privileged,4294967295,deny)" group.dba ``` #### 四、执行安装 完成上述准备步骤后,可以开始...
- **参数**: 输入值必须位于[-1,1]区间内。 - **应用场景**: 常用于数学计算和图形学领域。 5. **acosh、acoshf、acoshl** - **功能**: 计算反双曲余弦值。 - **输入限制**: 输入必须是非负值。 6. **asin、...
1. **进程控制**: - `fork()`:创建一个与当前进程几乎完全一样的新进程,新进程被称为子进程。 - `clone()`:类似于`fork()`, 但提供了更多定制选项,如共享某些资源。 - `execve()`:替换当前进程的内存映像,...
1. **进程控制**: - `fork()`:创建一个新的进程,新进程与原进程共享大部分资源,但拥有独立的进程ID。 - `clone()`:更灵活的进程创建方式,允许按指定条件创建子进程,如共享某些资源。 - `execve()`:用新的...
setproctitle库的核心功能是通过调用底层操作系统接口(在Unix系统中通常是`prctl()`或`sched_setparam()`,在Windows中则可能涉及其他APIs)来修改进程标题。这样,当使用`ps`或者`tasklist`等命令查看进程时,可以...
1. 页面分配器初始化(page_alloc_init):这是内存管理的基础,负责初始化内核的页面分配器,为后续的内存请求提供基础的内存管理功能。 2. 内存区域管理初始化(build_all_zonelists):Linux内核将物理内存分为...
1. **进程管理**:理解Linux下的进程调度机制,如 Completely Fair Scheduler (CFS) 和实时调度策略(如SCHED_FIFO、SCHED_RR)。 2. **系统调用**:使用`prctl`、`sched_setscheduler`等系统调用来改变进程调度...
1. **进程控制** - **fork**: 创建一个新进程。新进程几乎与父进程完全相同,但拥有自己的进程ID。 - **clone**: 允许更细粒度的控制来创建子进程,如共享内存段等。 - **execve**: 用于替换当前进程映像,加载...
##### 1. `fork` 创建一个新进程 - **功能**: 创建一个与父进程几乎完全相同的副本。 - **返回值**: 在父进程中返回子进程ID,在子进程中返回0。 - **应用场景**: 适用于创建子进程执行不同的任务或程序。 - **注意...
压缩包内的“prctl-1.6”可能是该开源工具的一个版本,名为“prctl”,可能是“process control”的缩写,它提供了一系列的系统调用来控制进程属性。版本号1.6表示这是该工具的第1.6次更新,通常意味着修复了之前...