随笔分类 -  Linux

摘要:(转载)http://blog.csdn.net/szwpc/article/details/518355struct hostent *gethostbyaddr(const char *name)这个函数,传入值是IP地址(注意,这里不是简单的字符串,需要先将字符串形式的IP地址由inet_aton转化一下),然后经过函数处理,将结果由返回值传出。返回值是一个hostent结构,具体可以参考我的Blog对于gethostbyname()这篇文章的解释。因为有了hosten这个传出的结构,我们可以在这个结构里面找到我们想需要的信息。下面的是例程。 编译后只需在命令行输入./a.out 202 阅读全文
posted @ 2013-05-02 23:15 robotke1 阅读(1097) 评论(2) 推荐(0)
摘要:(转载)http://www.cnblogs.com/s7vens/archive/2011/12/12/2284964.htmlLinux下这2个IP地址转换函数,可以在将IP地址在“点分十进制”和“整数”之间转换而且,inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6。算是比较新的函数了。inet_pton函数原型如下[将"点分十进制" -> "整数"]#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h> 阅读全文
posted @ 2013-05-02 22:44 robotke1 阅读(654) 评论(0) 推荐(0)
摘要:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <semaphore.h>#include <dirent.h>#include <pthread.h>#include <time.h>void* task2(void* arg){ int i = 0; while (i++ < 10) { sleep(1); prin 阅读全文
posted @ 2013-05-02 17:51 robotke1 阅读(1012) 评论(0) 推荐(0)
摘要:(转载)http://www.cnblogs.com/allen8807/archive/2010/11/10/1873843.html来源《鸟哥的linux私房菜》ps:将某个时间点的程序运作情况撷取下来[root@linux ~]# ps aux [root@linux ~]# ps -lA [root@linux ~]# ps axjf 参数: -A :所有的 process 均显示出来,与 -e 具有同样的效用; -a :不与 terminal 有关的所有 process ; -u :有效使用者 (effective user) 相关的 process ; x :通常与 a 这个参数一 阅读全文
posted @ 2013-05-02 16:04 robotke1 阅读(249) 评论(0) 推荐(0)
摘要:(转载)http://blog.csdn.net/r91987/article/details/5435327可以使用examine命令(简写是x)来查看内存地址中的值。x命令的语法格式:x/<n/f/u> <addr>n、f、u是可选的参数。(1)n是一个正整数,表示需要显示的内存单元的个数,也就是说从当前地址向后显示几个内存单元的内容,一个内存单元的大小由后面的u定义。 (2)f 表示显示的格式,参见下面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。 (3)u 表示从当前地址往后请求的字节数,如果不指定的话,GDB默认是4个byt 阅读全文
posted @ 2013-05-02 12:53 robotke1 阅读(305) 评论(0) 推荐(0)
摘要:(转载)http://bbs.chinaunix.net/thread-836577-1-1.html仅执行一次的操作int pthread_once(pthread_once_t *once_control, void (*init_routine) (void))本函数使用初值为PTHREAD_ONCE_INIT的once_control变量保证init_routine()函数在本进程执行序列中仅执行一次。#include <semaphore.h>#include <sys/types.h>#include <dirent.h>#include < 阅读全文
posted @ 2013-05-02 11:09 robotke1 阅读(1618) 评论(0) 推荐(0)
摘要:(转载)http://hi.baidu.com/gropefor/item/da814aaadfbd53f215329bb6摘要:本文简要介绍了LINUX多线程编程中分离线程的概念并给出了使用pthread库时需要用到分离线程的程序实例。关键字:分离线程,detach,pthread_create,pthread_detach,ENOMEM,12 线程一般有分离和非分离两种状态。默认的情形下是非分离状态,父线程维护子线程的某些信息并等待子线程的结束,在没有显示调用join的情形下,子线程结束时,父线程维护的信息可能没有得到及时释放,如果父线程中大量创建非分离状态的子线程(在LINUX系统中使用 阅读全文
posted @ 2013-05-01 23:30 robotke1 阅读(375) 评论(0) 推荐(0)
摘要:(转载)http://blog.csdn.net/wangsifu2009/article/details/6766365(1)进程组 每个进程除了有一个进程ID之外,还属于一个进程组。进程组是一个或多个进程的集合。通常,它们与同一作业相关联,可以接收来自同一终端的各种信号。每个进程组有一个唯一的进程组ID。每个进程组都可以有一个组长进程。组长进程的标识是,其进程组ID等于其进程ID。组长进程可以创建一个进程组,创建该组中的进程,然后终止。只要在某个进程组中一个进程存在,则该进程组就存在,这与其组长进程是否终止无关。(2)作业 Shell分前后台来控制的不是进程而是作业(Job)或者进程组(P 阅读全文
posted @ 2013-05-01 23:20 robotke1 阅读(305) 评论(0) 推荐(0)
摘要:(转载)http://blog.chinaunix.net/uid-23089249-id-210808.html一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁, 而是留下一个称为僵死进程(Zombie)的数据结构(系统调用exit,它的作用是使进程退出,但也仅仅限于将一个正常的进程变成一个僵死进程,并不能将其完全销毁)。一、僵死进程的产生 在每个进程退出的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等,但是仍然为其保留一定的信息(包括进程号the process ID,退出状态the termination status of the process, 阅读全文
posted @ 2013-05-01 22:38 robotke1 阅读(206) 评论(0) 推荐(0)
摘要:(转载)http://blog.csdn.net/chinalinuxzend/article/details/2270260原贴:http://groups.google.com/group/riverbird2005/browse_thread/thread/6814aca2d1943d32 今天dot.kde登了一篇对valgrind的作者 Jonathan Riddell 的访谈。我作为valgrind的老用户,当年调程序时获益 很多,在这篇访谈里进一步长了见识,深感有必要把这个优秀的开发工具介绍给诸位。以下内容多翻译自该访谈(意译啦)。 啥是valgrind Valgrind是帮.. 阅读全文
posted @ 2013-05-01 22:19 robotke1 阅读(389) 评论(0) 推荐(0)
摘要:原贴:http://www.it414.com/show/10099Linux下检查内存泄漏、系统性能的系列工具Pub Date:2008-02-16 10:45:34 Author: moon Click:1641、定位内存泄漏问题 在我先前的博客文章中我介绍了如何在Windows .NET环境下如何定位内存泄漏问题,今天我就来介绍一个在Linux下定位此类问题的工具Valgrind和Callgrind,以及基于Callgrind分析结果的GUI分析工具KCachegrind。Callgrind和KCachegrind在后面的专题讲。 首先介绍Valgrind,网址是:http://valg 阅读全文
posted @ 2013-05-01 22:08 robotke1 阅读(516) 评论(0) 推荐(0)
摘要:(1)通过全局变量进行传递struct food{ int a; int b; int c;};struct food apple;void* task1(void* arg){ apple.a = 27; apple.b = 12; apple.c = 39; pthread_exit((void*)&apple);}int main(int argc, char *argv[]){ pthread_t thrd1, thrd2, thrd3; void* tret; pthread_create(&thrd1, NULL, (vo... 阅读全文
posted @ 2013-05-01 20:06 robotke1 阅读(481) 评论(0) 推荐(0)
摘要:进程中的任一线程调用了exit,_Exit或者_exit,那么整个进程都会终止。 单个线程在不终止整个进程的情况下停止它的控制流,有三种方式:(1)线程只是从启动例程中返回,返回值是线程的退出码。(2)线程可以被同一进程中的其他线程取消。(3)线程调用pthread_exit。1、单个线程调用exit,_Exit或者_exitvoid* task1(void* arg){ while (1) {sleep(1);printf("thread1 running...\n");} return NULL;}void* task2(void *arg){ while (1) {s 阅读全文
posted @ 2013-05-01 18:25 robotke1 阅读(503) 评论(0) 推荐(0)
摘要:1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <unistd.h> 5 #include <semaphore.h> 6 #include <sys/types.h> 7 #include <dirent.h> 8 #include <pthread.h> 9 #include <errno.h>10 #include <signal.h>11 #include < 阅读全文
posted @ 2013-05-01 15:48 robotke1 阅读(337) 评论(0) 推荐(0)
摘要:(转载)http://www.cnblogs.com/mydomain/archive/2011/08/14/2138454.html(2)线程的分离与结合(a) 在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。(b)一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。(c)相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。线程的分离状态决定一个线程以什么样的方式来终止自己。在上面的例子中,我们采用了线程的默认属性,即为非分离状态(即可结合的,joinable, 阅读全文
posted @ 2013-05-01 15:20 robotke1 阅读(167) 评论(0) 推荐(0)
摘要:(转载)http://blog.csdn.net/xinu2009/article/details/6768133信号量的数据类型为结构sem_t,它本质上是一个长整型的数。------函数sem_init()用来初始化一个信号量。 它的原型为: extern int sem_init __P ((sem_t *__sem, int __pshared, unsigned int __value));sem为指向信号量结构的一个指针;pshared不为0时此信号量在进程间共享,否则只能为当前进程的所有线程共享;value给出了信号量的初始值。-----函数sem_post( sem_t *se 阅读全文
posted @ 2013-05-01 14:36 robotke1 阅读(262) 评论(0) 推荐(0)
摘要:(转载)http://blog.chinaunix.net/uid-14966892-id-2780401.htmlHere is an answer from the "Frequently Asked Questions about the GNU C Library" (the FAQ):4.9. How can I find out which version of glibc I am using in the moment?{UD} If you want to find out about the version from the command line s 阅读全文
posted @ 2013-05-01 14:33 robotke1 阅读(433) 评论(0) 推荐(0)
摘要:(转载)http://www.cppblog.com/prayer/archive/2009/04/01/78597.html转载自:http://www.turbolinux.com.cn/turbo/wiki/doku.php?do=export_xhtml&id=%E6%94%B6%E9%9B%86%E7%B3%BB%E7%BB%9F%E4%BF%A1%E6%81%AF:lsof的确是个有用的命令,可以查看那个进程,那个用户打开了某个文件,目录等信息。lsof简介lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式 阅读全文
posted @ 2013-04-27 21:52 robotke1 阅读(721) 评论(0) 推荐(0)
摘要:(转载)http://www.cppblog.com/prayer/archive/2009/07/05/89286.htmllinux下的线程真是很有趣,各种在windows编程里看不到的技巧在这里尽显无余。在一个进程里有许多的线程,这些线程共享进程里的所有资源。包括数据空间,所以全局变量是为所有的线程所共享的。但如果线程里的全局变量为所有的线程所共享会出现一些问题。比如如果代码量很大的话那么名字的命名都是一个问题。如果两个线程有相同的全局erron变量那么线程2可以会用到线程1的出错提示。这个问题可以通过创建线程的私有数据来解决(thread-specific Data,TSD)。一个线程 阅读全文
posted @ 2013-04-27 21:10 robotke1 阅读(657) 评论(0) 推荐(0)
摘要:[root@robot ~]# cat /proc/sys/kernel/pid_max // 最大进程数32768[root@robot ~]# cat /proc/sys/kernel/threads-max // 最大线程数15856[root@robot ~]# cat /proc/sys/fs/file-max // 最大文件描述符数101386[root@robot ~]# Linux内核提供了一种通过/proc文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数... 阅读全文
posted @ 2013-04-27 19:14 robotke1 阅读(2519) 评论(0) 推荐(0)