undefined

1
线程栈:这些栈被保存在虚拟地址空间的栈区域中,并且通常是被相应的线程独立地访问。这里我们说通常而不是总是,是因为一个线程栈不对其他线程设防,我们可以通过一个指向其他线程栈的指针(比如一个全局的指针变量)来读写其他线程栈的任何部分

undefined

sysconf 调用说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 sysconf( _SC_PAGESIZE );  此宏查看缓存内存页面的大小;打印用%ld长整型。
sysconf( _SC_PHYS_PAGES ) 此宏查看内存的总页数;打印用%ld长整型。
sysconf( _SC_AVPHYS_PAGES ) 此宏查看可以利用的总页数;打印用%ld长整型。
sysconf( _SC_NPROCESSORS_CONF ) 查看cpu的个数;打印用%ld长整。
sysconf( _SC_NPROCESSORS_ONLN ) 查看在使用的cpu个数;打印用%ld长整。
(long long)sysconf(_SC_PAGESIZE) * (long long)sysconf(_SC_PHYS_PAGES) 计算内存大小。
sysconf( _SC_LOGIN_NAME_MAX ) 查看最大登录名长度;打印用%ld长整。
sysconf( _SC_HOST_NAME_MAX ) 查看最大主机长度;打印用%ld长整。
sysconf( _SC_OPEN_MAX ) 每个进程运行时打开的文件数目;打印用%ld长整。
sysconf(_SC_CLK_TCK) 查看每秒中跑过的运算速率;打印用%ld长整。

返回值:
若成功则返回相应值;若出错则返回-1
_SC_CLK_TCK的返回值是每秒钟的时钟滴答数,以用于times函数的返回值

popen 和 system 函数

一、popen 函数

函数定义:FILE * popen( const char * command,const char * type);

说明:popen 会调用 fork 产生子进程,然后从子进程中调用 /bin/sh -c 来执行参数 command 的指令。参数 type 可使用 r 代表读取,w 代表写入。依照此 type 值,popen() 会建立管道连到子进程的标准输出设备或标准输入设备,然后返回一个文件指针。随后进程便可利用此文件指针来读取子进程的输出设备或是写入到子进程的标准输入设备中。此外,所有使用文件指针 (FILE*) 操作的函数也都可以使用,除了 fclose() 以外。

返回值:若成功则返回文件指针,否则返回NULL,错误原因存于errno中。

注意:在编写具SUID/SGID权限的程序时请尽量避免使用popen(),popen()会继承环境变量,通过环境变量可能会造成系统安全的问题

1
2
3
4
5
6
FILE *fp;
char buffer[80];
fp = popen("cat /etc/passwd", "r");
fgets(buffer, sizeof(buffer), fp);
printf("%s", buffer);
pclose(fp);

查看更多

undefined

top 命令参数

1
2
3
4
5
-b 运行脚本模式
-c 显示 command 列中命令的完整路径
-n 指定 top 在结束之前应该产生的最大迭代数
-o 定义了按照那个字段排序
-d 刷新时间

top 使用方法

1
2
3
4
5
6
7
8
9
10
11
1. 按照 cpu 使用率对数据进行排序
top -bc -n 1 | head -20

2. 按照内存使用顺序排序
top -bc -o +%MEM -n 1 | head -n 20

3. 在批处理模式下,使用 top 命令根据进程的使用时间排列数据。他显示进程自启动以来消耗的 cpu 时间总量
top -bc -o TIME+ -n 1 | head -n 20

4. 将 top 的输出结果保存到文件
top -bc | head -30 > top_info.txt

查看更多