摘要:
在调试程序时出现端错误,gdb提示“Program received signal SIGSEGV, Segmentation fault” SIGSEGV 该信号指示进程进行了一次无效内存引用。 SEGV表示段违例(segmentation violation)。 阅读全文
摘要:
#include <stdio.h>#include <pthread.h>void *pthread_fun(void *arg){ while (1) { sleep(1); printf("pthread running\n"); } return((void *)0);}int main(){ pthread_t tid; pthread_create(&tid, NULL, p... 阅读全文
摘要:
gcc test.c -lpthread 阅读全文
摘要:
终端执行一个进程,该进程创建一个子进程,当Ctrl+c后,父子进程都退出,因为,父子进程捕捉到退出信号的默认动作就是结束进程。 如果,在子进程中捕捉退出信号,动作改为忽略,则ctrl+c后,父进程退出,子进程不会退出,子进程被进程ID为1的init进程领养。 代码如下: #include <stdio.h>#include <signal.h>int main(){ if (fork() ==... 阅读全文
摘要:
http://www.cnblogs.com/chio/archive/2007/11/24/970632.html volatile char a; a=0; while(!a){ //do some things; } do_other(); 如果没有 volatile, do_other()不会被执行。 volatile极易改变的意思。 表示用volatile定义的变量会在程序外被改变,每次都必须从内存中读取,而不能把他放在cache或寄存器中重复使用。 在中断程序中经常会用到。 阅读全文
摘要:
头文件:#include <sys/time.h>#include <sys/resource.h>原型:int getpriority(int which, int who);int setpriority(int which, int who, int prio);参数:which为PRIO_PROCESS,则who指定进程ID;which为PRIO_PGRP,则who指定进程组ID;which为PRIO_USER,则who指定用户ID.who为0,代表调用该函数的当前进程ID,进程组ID或用户ID.prio -20---19,一般默认为0,pri越小,优先级越高, 阅读全文
摘要:
TCP有个套接字选项TCP_NODELAY设置这个选项可以禁止Nagle算法。 解决的问题: 小包问题,如从键盘输入的一个字符,占用一个字节,可能在传输上造成41字节的包,其中包括1字节的有用信息和40字节的标题数据,这种情况转变成了4000%的消耗。 Nagle算法要求,一个TCP连接上最多只能有一个未被确认的未完成的小分组。 阅读全文
摘要:
为什么要有内联函数,即内联函数的作用内联函数是为了避免调用函数的开销。内联函数不是在调用时发生转移,而是在编译时将函数体嵌入到每个内联函数调用处。类似于宏定义,如宏定义:#define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2))但是宏定义并不能进行参数有效性的检查等。所以,可以这么理解,内联函数是宏定义的扩展,消除了宏定义不能进行参数有效性检查等缺点。或者这么理解,编译时,内联函数在调用处展开,以目标代码的增加为代价换取时间上的节省。什么时候用内联函数 阅读全文
摘要:
《Unix环境高级编程》初始化一个守护进程的调用,cmd可为守护进程名。void daemonize(const char *cmd){ int i, fd0, fd1, fd2; pid_t pid; struct rlimit r1; struct sigaction sa; /* 设置文件模式创建屏蔽字为0,因为继承得来的文件模式创建屏蔽字可能会拒绝设置某些权限。 */ umask(0); /* 获取最大文件描述符。 */ if (getrlimit(RLIMIT_NOFILE, &r1) < 0) { err_sys("%s... 阅读全文
摘要:
1、用户按某些终端键时,引发终端产生的信号。如在终端按Ctrl+c将产生中断信号SIGINT. 2、硬件产生信号,如除数为0,无效的内存引用等。这些条件通常由硬件检测到传给内核,然后内核通知进程。 3、进程调用kill函数可将信号发送给另一个进程或进程组。 4、用户可用kill命令将信号发送给其他进程。 5、当检测到某种软件条件发生时,也可能产生信号。如在网络连接上传来带外数据时产生SIGURG. 阅读全文