首页 > 代码库 > [Linux]进程——备忘

[Linux]进程——备忘

1,SIGPIPE信号:

linux下写socket的程序的时候,如果尝试send到一个disconnected socket上,就会让底层抛出一个SIGPIPE信号。这个信号的缺省处理方法是退出进程,大多数时候这都不是我们期望的。因此我们需要重载这个信号的处理方法。调用以下代码,即可安全的屏蔽SIGPIPE

TCP/IP四路挥手点击打开链接

 

2,prctl()函数应用 
http://blog.csdn.net/zuokong/article/details/7318154
比如返回当前调用该函数的进程
char threadname[17]; // one more for termination
if (prctl(PR_GET_NAME, (unsigned long)threadname, 0, 0, 0) != 0) {
      strcpy(threadname, "<name unknown>");
 
 
3,向socket写数据的时候经常会遇到EINTR错误~对此应该忽略即可
#define  RETRY_ON_EINTR(ret,cond) \
    do { \
        ret = (cond); \
    } while (ret < 0 && errno == EINTR)

RETRY_ON_EINTR(ret, write(s, &tid, sizeof(unsigned)));

 

4,自旋锁在单核和多核的区别

1. 在单cpu,不可抢占内核中,自旋锁为空操作。
2. 在单cpu,可抢占内核中,自旋锁实现为“禁止内核抢占”,并不实现“自旋”。
3. 在多cpu,可抢占内核中,自旋锁实现为“禁止内核抢占” + “自旋”。

 

5,android查看内存的命令procrank命令~

    • VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
    • RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)
    • PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
    • USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)

[Linux]进程——备忘