随笔分类 -  Linux下C编程

linux找不到动态链接库 .so文件的解决方法
摘要:如果使用自己手动生成的动态链接库.so文件,但是这个.so文件,没有加入库文件搜索路劲中,程序运行时可能会出现找不到动态链接库的情形。可以通过ldd命名来查看可执行文件依赖的动态链接库,如下(其中D为可执行程序):其中的libjson_linux-gcc-4.6_libmt.so cannot fo... 阅读全文

posted @ 2014-04-29 09:00 旭东的博客 阅读(111211) 评论(9) 推荐(2) 编辑

Linux C Socket编程发送结构体、文件详解及实例
摘要:利用Socket发送文件、结构体、数字等,是在Socket编程中经常需要用到的。由于Socket只能发送字符串,所以可以使用发送字符串的方式发送文件、结构体、数字等等。本文:http://www.cnblogs.com/xudong-bupt/p/3496741.html1.memcpy Copy block of memory。内存块拷贝函数,该函数是标准库函数,可以进行二进制拷贝数据。 函数原型:void * memcpy ( void * destination, const void * source, size_t num ); 函数说明:从source指向的地址开始拷贝num... 阅读全文

posted @ 2014-01-04 19:21 旭东的博客 阅读(22722) 评论(1) 推荐(1) 编辑

Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
摘要:本文:http://www.cnblogs.com/xudong-bupt/p/3504442.htmlLinux C 下面读取文件夹要用到结构体struct dirent,在头#include 中,如下:#include struct dirent{ long d_ino; /* inode number 索引节点号 */ off_t d_off; /* offset to this dirent 在目录文件中的偏移 */ unsigned short d_reclen; /* length of this d_name 文件名长 */ unsigned char d_typ... 阅读全文

posted @ 2014-01-04 13:15 旭东的博客 阅读(78538) 评论(2) 推荐(4) 编辑

Linux C Socket编程原理及简单实例
摘要:部分转自:http://goodcandle.cnblogs.com/archive/2005/12/10/294652.aspx1. 什么是TCP/IP、UDP?2. Socket在哪里呢?3. Socket是什么呢?4. 有很多的框架,为什么还在从Socket开始?5. Linux C Socket简单示例1.什么是TCP/IP、UDP? TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。 UDP(User Data Protocol,用户数据报.. 阅读全文

posted @ 2013-12-29 16:46 旭东的博客 阅读(80223) 评论(10) 推荐(14) 编辑

linux C 多线程/线程池编程 同步实例
摘要:在多线程、线程池编程中经常会遇到同步的问题。1.创建线程 函数原型:int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void*(*start_routine) (void *), void *arg); 参数:thread指向线程id的指针;attr指向线程属性的指针;第三个为执行的方法的函数指针;arg指向给方法传递的参数的指针。2.互斥变量 (1)互斥变量 pthread_mutex_t (2)互斥变量锁定 int pthread_mutex_lock(pthread_mutex_t *mutex... 阅读全文

posted @ 2013-12-18 19:22 旭东的博客 阅读(2679) 评论(0) 推荐(1) 编辑

linux内存共享(转)
摘要:共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。在/proc/sys/kernel/目录下,记录着共享内存的一些限制,如一 个共享内存区的最大字节数shmmax,系统范围内最大共享内存区标识符数shmmni等,可以手工对其调整,但不推荐这样做。一、应用共享内存的使用,主要有以下几个API:ftok()、shmget()、shmat()、shmdt()及shmctl()。1)用ftok()函数获得一个ID号.应用说明:在IPC中,我们经常用key_t的值来创建或者打开信号量,共享内存和消息队列。函数原型:key_t ftok(const char *pathname, int p 阅读全文

posted @ 2013-04-21 11:34 旭东的博客 阅读(1142) 评论(0) 推荐(0) 编辑

用gdb来学习c语言(linux环境下)
摘要:本文转自:http://blog.csdn.net/physicsdandan/article/details/8076446gdb的使用介绍先创建一个如下的C程序,minimal.cint main(){ int i = 1337; return0;}这个程序不做任何事情并且没有一个printf语句。现在我们要鼓足勇气来通过gdb学习C语言了!编译这个程序时加上-g参数,这样gdb就可以调试信息了。然后执行下面命令。$ gcc -g minimal.c -o minimal$ gdb minimal你会发现你已经看到了gdb的prompt。我许诺过给你一个REPL,这里就是(gdb) pri 阅读全文

posted @ 2013-04-04 16:44 旭东的博客 阅读(851) 评论(0) 推荐(0) 编辑

Linux下C编程,进程通信之标准流管道通信(即系统调用)
摘要:1.概述 在编程的过程中总会需要使用系统调用,如linux下的ps,touch,rm,grep命令等;windows下的dir,mkdir,del命令等。 在linux中执行系统调用,通常使用标准流管道。 标准流管道将一系列的创建过程合并到一个函数popen()中。poen完成的工作有以下几步: (1)创建一个管道。 (2)fork一个子进程。 (3)在父子进程中关闭不需要的文件描述符。 (4)执行exec函数族调用。 (5)执行函数中所指定的命令。2.主要函数说明 FILE*popen(const char*command,const char*type) (1)comm... 阅读全文

posted @ 2013-03-29 19:45 旭东的博客 阅读(2370) 评论(0) 推荐(1) 编辑

Linux下C编程,进程通信之无名管道通信
摘要:最近在看进程间的通信,下面说说管道通信之无名管道。1.概述 管道是Linux中很重要的一种通信方式,他是把一个程序的输出直接连接到另一个程序的输入,并且管道具有队列的特性。如Linux命令,“ps -ef | grep root”。如下图所示:2.无名管道 2.1特点 (1)它只能用于具有亲缘关系的进程之间的通信(也就是父子进程或者兄弟进程之间)。 (2)它是一个半双工的通信模式,具有固定的读端和写端。 (3)管道也可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。 2.2主要函数说... 阅读全文

posted @ 2013-03-28 22:11 旭东的博客 阅读(2685) 评论(0) 推荐(3) 编辑

Linux下C编程,子进程创建函数fork() 执行解析
摘要:最近在看进程间的通信,看到了fork()函数,虽然以前用过,这次经过思考加深了理解。现总结如下:1.函数本身 (1)头文件 #include<unistd.h> #include<sys/types.h> (2)函数原型 pid_t fork( void); (pid_t 是一个宏定义,其实质是int 被定义在#include<sys/types.h>中) 返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1 (3)函数说明 一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程(child 阅读全文

posted @ 2013-03-26 11:40 旭东的博客 阅读(10470) 评论(0) 推荐(1) 编辑

导航