自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 共享内存理解:shmget()函数、shmat()、IPC_CREAT | IPC_EXCL

int shmget(key_t key, size_t size, int shmflg); 参数 size 是以字节为单位指定内存的大小;参数 shmflg 是操作标志位,它的一些宏定义如下:IPC_CREATE : 调用 shmget 时,系统将此值与其他共享内存区的 key 进行比较,如果存在相同的 key ,说明共享内存区已存在,此时返回该共享内存区的标识符,否则新建一个共享内存区并返回...

2018-04-22 10:35:17 3673

转载 Linux编程gcc编译器禁止所有警告和显示所有警告

编译程序的时候,经常会出现警告。不过对于很多经过,程序员经常无视它的存在,甚至觉得警告挺烦人的。在linux编译程序时,我们可以很方便的禁止所有警告和显示所有警告。    gcc编译器命令选项-Wall 用来显示所有警告信息,而-w则用来禁止所有警告的显示。默认是显示警告的。警告不是错误,所以错误会正常的显示。    下面是命令的使用示例:显示所有警告信息gcc hello.c -o hello ...

2018-04-19 17:23:37 4577

转载 LINUX共享内存使用常见陷阱与分析

 所谓共享内存就是使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。其他进程能把同一段共享内存段“连接到”他们自己的地址空间里去。所有进程都能访问共享内存中的地址。如果一个进程向这段共享内存写了数据,所做的改动会即时被有访问同一段共享内存的其他进程看到。共享内存的使用大大降低了在大规模...

2018-04-19 15:52:59 6381

原创 libsqlite3.so.0.8.6和libsqlite3.so.0区别

libsqlite3.so.0.8.6   是32位的库libsqlite3.so.0  是64位的库

2018-04-19 14:45:04 2943 2

转载 linux 中 open和fopen的区别

open和fopen的区别: 主要区别是涉及到系统,而不是缓冲。带f的是标准IO,代码可以移植。不带f只能在UNIX/LINUX系统调用。  open一个是整数,fopen一个是指针(FILE *)。  二者区别大致可以总结为以下几点: 1,fread是带缓冲的,read不带缓冲.  2,fopen是标准c里定义的,open是POSIX中定义的.  3,fread可以读一个结构.read在linu...

2018-04-18 16:49:40 631

转载 C语言中lseek()函数和fseek()函数的使用详解

C语言lseek()函数:移动文件的读写位置头文件:?1#include <sys/types.h>  #include <unistd.h>定义函数:?1off_t lseek(int fildes, off_t offset, int whence);函数说明:每一个已打开的文件都有一个读写位置, 当打开文件时通常其读写位置是指向文件开头, 若是以附加的方式打开文件(如...

2018-04-18 16:42:38 3832

转载 open/close函数的使用

1.open函数的使用调用open函数可以打开或创建一个文件 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int open(...

2018-04-18 16:29:29 2960

转载 创建守护进程以及为什么fork两次

守护进程守护进程也叫精灵进程(Daemon),它在后台运行,独立于控制终端并周期性地执行某种任务或等待某些事情发生,一般用于C/S 服务中,在服务端监听端口,等待客户端的连接,如果有客户端发出连接,则fork出一个子进程去响应,而守护进程继续监听。步骤创建一个守护进程一般有如下几步:调用umask(0),将文件模式创建屏蔽字改为0调用fork(),父进程退出,目的是: 父进程终止可以让shell切...

2018-04-18 16:04:59 258

转载 chdir改变当前目录以及理解守护进程为何fork()两次?

 /* 父进程退出 */    if (fork() != 0)    {        exit(1);    }        if (setsid() < 0)    {        exit(1);    }        if (fork() != 0)    {        exit(1);    } sprintf(app_dir_path, "%s/%s", WORK_D...

2018-04-18 15:49:28 982

转载 linux中的access函数

#include<unistd.h>  int access(const char* pathname, int mode);  int faccessat(int fd, const char* pathname, int mode, int flag);  先说简单的access函数,pathname是文件的路径名+文件名,指定要测试的文件;mode则指明测试哪种权限,实际上有4种...

2018-04-18 15:02:12 2492

转载 chmod命令详解使用格式和方法

Linux/Ubuntu 系统中文件调用的权限分为三级:文件拥有者(u)、群组(g)、其他(o)。用chmod就可以更改文件的权限。chmod是一个相当灵活的命令,对同一个文件的权限的修改可以用多种风格的命令格式来实现。方式一:语法格式: chmod [-vR] mode 文件名参数说明:mode 权限设置字串,格式为[ugoa] [+-=] [rwx]u 表示文件的拥有者g 表示与此文件拥有者属...

2018-04-18 14:42:06 1100

转载 linux mount (挂载命令)、umount (卸载命令)详解

使用umount -l。即 umount -l /mnt选 项 –l 并不是马上umount,而是在该目录空闲后再umount。还可以先用命令 ps aux 来查看占用设备的程序PID,然后用命令kill来杀死占用设备的进程,这样就umount的非常放心了。(来 源:http://www.cnblogs.com/qq78292959/archive/2012/03/06/2382334.html)...

2018-04-18 14:11:40 9837

原创 system()、popen()

在linux中我们可以通过system()来执行一个shell命令,popen()也是执行shell命令并且通过管道和shell命令进行通信。 system()、popen()给我们处理了fork、exec、waitpid等一系列的处理流程,让我们只需要关注最后的返回结果(函数的返回值)即可。 2. system()、popen()源码 首先我们来看一下这两个函数在源码(伪代

2018-04-18 13:54:26 7876

原创 linux ls命令ls /dev | grep sda 什么意思(以及grep连接符|怎么用)

ls /dev | grep sda在 dev目录中设备中  查找名字含有sda字符串的文件名linux ls命令 ls -F | grep /$ 什么意思ls -F的意思是把文件按照类型归类,并且在末尾加上/ *等符号标识| 连接符的意思是把前面命令的结果当做输入传给后面的命令grep /$的意思是从中挑出以/结尾的行PS:/标识是目录在linux中 ls |grep m?.c|wc-l 的意思...

2018-04-18 11:36:37 11316

转载 linux进程运行的相关shell命令 fg、bg、jobs、&、ctrl + z(后台、前台等等)

fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的一.& 最经常被用到这个用在一个命令的最后,可以把这个命令放到后台执行二.ctrl + z可以将一个正在前台执行的命令放到后台,并且暂停三.jobs查看当前有多少在后台运行的命令四.fg将后台中的命令调至前台继续运行如果后台中有多个命令,可以用 fg %jobn...

2018-04-18 09:58:20 1066 1

原创 linux系统下 CP命令(备注:替换正在运行的进程,用FTP工具是从本地传是不行的,需要用cp -rf ../update/zb_terminal ./zb_terminal)

cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。语法cp(选项)(参数)选项-a:此参数的效果和同时指定"-dpR"参数相同;-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件...

2018-04-17 16:09:37 792

转载 linux中的find命令——查找文件名

很简单,一个命令搞定。比如你要找所有/home下文件名里包含 .a 的所有文件,终端输入:# find /home -name *.a*终端就会都显示出来~记得有些文件夹只有root用户有权限,所以sudo一下$ sudo find /home -name *.a*求采纳,自己常用,100%正确~转载 2013年10月29日 15:12:4139201.在某目录下查找名为“elm.cc”的文件fi...

2018-04-16 20:00:41 28936

转载 本地socket与网络socket实现

Linux进程间通信方式–本地socket服务端://s_unix.c#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <sys/un.h> #define UNIX_DOMAIN "/tmp/UNIX.domain"int main(void)...

2018-04-16 13:53:20 2457

转载 进程间通信之:socket

最近初步学习了本地进程间通信的方式(PIPE、FIFO、message queue、semaphore、shared memary),计划按照“unix 环境高级编程”来学习socket,但是书本上来就讲socket的一些api,感觉一直没搞懂,通过今天的网络搜索,终于发现几篇不错的文章,再次整理一下,即梳理思路,又可转换成自己容易理解的语言。1.TCP/IP  在学习socket之前,先简单了解...

2018-04-16 11:22:20 195

原创 如果指针指向了文件中的内容,外部修改了此指针指向地址的内容,文件也会修改

我在程序中遇到的是                 比如一个版本配置文件    version.xml   &(dp->str_UPDATE_EXEC.str_VER_CFG)此地址里面的内容,外面修改了此地址里面的内容,其实文件也有变化,initVersionManage(&(dp->str_UPDATE_EXEC.str_VER_CFG));...

2018-04-16 10:30:31 274

原创 linux sync命令到底做了什么(结合项目中遇到的问题)

很久前保存的一片文章, 不清楚具体出处了.[cpp] view plain copy/* sync - update the super block    Copyright (C) 1994-2004 Free Software Foundation, Inc.     This program is free software; you can redistribute it and/or m...

2018-04-13 15:52:24 1241

原创 拷贝目录里面的文件夹里面内容到同样名字的目录中

cp -rf ../update/* ../在app中  运行此命令的作用 相当于把 update目录中的所有文件夹比如 app  lib(/home/update/app)等  拷贝到 相同名字文件夹中/home/app   /home/lib中...

2018-04-12 15:24:25 272

原创 C语言chdir()函数:改变当前的工作目录

相关函数:getcwd, chroot头文件:#include <unistd.h>定义函数:int chdir(const char * path);函数说明:chdir()用来将当前的工作目录改变成以参数path 所指的目录.返回值执:行成功则返回0, 失败返回-1, errno 为错误代码.范例#include <unistd.h>main(){    chdir("...

2018-04-11 10:02:03 11687

转载 linux命令详解:md5sum命令

在网络传输、设备之间转存、复制大文件等时,可能会出现传输前后数据不一致的情况。这种情况在网络这种相对更不稳定的环境中,容易出现。那么校验文件的完整性,也是势在必行的。使用说明md5sum命令用于生成和校验文件的md5值。它会逐位对文件的内容进行校验。是文件的内容,与文件名无关,也就是文件内容相同,其md5值相同。md5值是一个128位的二进制数据,转换成16进制则是32(128/4)位的进制值。m...

2018-04-11 09:38:00 1358

原创 linux根据进程号PID查找启动程序的全路径(程序实现根据PID进程号得到进程名字或根据进程名字取得进程号)

sam9x25-linux login: rootPassword: root@sam9x25-linux:~ cd approot@sam9x25-linux:~/app ps  PID TTY          TIME CMD  749 ttyp2    00:00:00 login  750 ttyp2    00:00:00 sh  752 ttyp2    00:00:00 psroo...

2018-04-09 13:43:23 3812

转载 SourceInsight全工程查找替换方法

2011-12-3SourceInsight最新使用心得(全工程查找替换方法)背景:本人起底板的程序编写不符合规范,需要重新编写,例如:宏定义的规范是都要大写,且字母中间加下划线的方式,而本人没有按规则来,需要在整个程序范围内把所有的宏定义都改掉,如#define jian_dao_num_ 1 1改为#define JIAN_DAO_NUM_1 1问题:如何保证一个不漏的在所有的地方都改掉呢?方...

2018-04-09 09:57:37 18759

原创 int main(int argc,char* argv[])详解,以及与int main()有什么区别

K&R C 上5.10 命令行参数 中介绍的int main(int argc,char* argv[ ])在 d:\ 编写 程序,并命名为 c.c #includeint main(int argc, char ** argv){    int i;    for (i=0; i < argc; i++)        printf("Argument %d is %s.\n", ...

2018-04-09 09:38:37 269

原创 进程和线程的区别

操作系统面试题1、进程和线程的区别?解析:(1)进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元          (2)同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进行至少包括一个线程。          (3)进程的创建调用fork或者vfork,而线程的创建调用pthread_create,进程结束后它拥有的所有线程都将销毁,而线程...

2018-04-08 19:50:50 199

原创 pthread_attr_init线程通俗举例讲解与线程属性

函数简介  pthread_create是UNIX环境创建线程函数头文件  #include<pthread.h>函数声明  int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg);返回值  若...

2018-04-08 19:33:25 1489

转载 linux创建线程之pthread_create

函数简介  pthread_create是UNIX环境创建线程函数头文件  #include<pthread.h>函数声明  int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg);返回值  若...

2018-04-08 19:14:34 299

转载 【Linux函数】Signal ()函数详细介绍

1. 功能设置某一信号的对应动作2. 声明#include <signal.h>typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sighandler_t handler);1233. 参数说明 第一个参数signum:指明了所要处理的信号类型,它可以取除了SIGKILL和SIGSTOP外的任何一种信...

2018-04-08 17:32:19 154

原创 LINUX SIGNAL信号标志详解

在终端使用kill -l 命令可以显示所有的信号。$kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR213) SIGPIPE 14) SIGALRM 15) SIGTERM 16) ...

2018-04-08 16:53:19 419

原创 pthread的pthread_join()函数理解实验

一、使用方式pthread_t tid;pthread_create(&tid, NULL, thread_run,NULL);pthread_join(tid,NULL);创建线程之后直接调用pthread_join方法就行了。二、为什么要使用pthread_join()        在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结...

2018-04-08 16:21:54 770

转载 linux c/c++ 解决隐式声明与内建函数不兼容问题

原因就是因为缺少      #include<string.h> man memset     就可以知道memset包含在哪个头文件中  警告:隐式声明与内建函数'memset'不兼容警告:隐式声明与内建函数'strcpy'不兼容警告:隐式声明与内建函数'strstr'不兼容警告:隐式声明与内建函数'strncpyt'不兼容警告:隐式声明与内建函数'strlen'不兼容 ...

2018-04-08 09:39:00 1444

原创 初始化时共享内存的key值和信号量初始化的key值可以一样

初始化时共享内存的key值和信号量初始化的key值可以一样的,也可以不一样都行。          #define TEST_SHM_KEY       0x30000001          #define TEST_SEM_KEY       0x30000001也可以是  :        #define TEST_SHM_KEY       0x30000000          #def...

2018-04-03 15:02:56 1239

原创 malloc(malloc在32位编译系统中分配的地址会8字节对齐,64为编译系统中会8或者16字节对齐)

了解malloc分配策略的人都知道,malloc在32位编译系统中会8字节对齐,64为编译系统中会8或者16字节对齐。故32位malloc分配后的首地址肯定是8的整数倍。       举例说明:32位系统环境, 假设按4字节对齐,分配8字节的存储空间存储long long型的内容。malloc获取地址为0x1acf3014(4字节对齐), 返回给用户的地址为0x1acf300c(实际存储数据的地址...

2018-04-03 10:05:27 7380

转载 64位与32位linux c开发时默认字节对齐值

1、64位机器sizeof的值为16struct A{char a;int b;int c;}2、32位机器sizeof的值为123、空间换时间如果在编程的时候要考虑节约空间的话,那么我们只需要假定结构的首地址是0,然后各个变量按照上面的原则进行排列即可,基本的原则就是把结构中的变量按照类型大小从小到大声明,尽量减少中间的填补空间.还有一种就是为了以空间换取时间的效率,我们显示的进行填补空间进行对...

2018-04-03 09:48:30 2878 2

原创 如果在linux下指定在不被4整除的内存地址上写入int型变量会发生什么

总结:(1)linux下内存存储的一般都是低位在前,高位在后。(2)linux默认对齐字节都是按照int型变量占的字节个数对齐,32系统int型占4个字节,所以此系统默认对齐是4个字节。(3)如果指定在不被4整除的内存地址上存放int型变量,会按照下面图逆序和拼接产生数据。 假设指定一内存地址:0x0001603a (注意此数不能被4整除) 0x0001603a=90170, 90170/4=22...

2018-04-02 11:13:34 348 2

转载 c语言中通过指针将数值赋值到制定内存地址

1.一种直观的方法 假设现在需要往内存0x12ff7c地址上存入一个整型数0x100。我们怎么才能做到呢?我们知道可以通过一个指针向其指向的内存地址写入数据,那么这里的内存地址0x12ff7c其本质不就是一个指针嘛。所以我们可以用下面的方法:int *p = (int *)0x12ff7c;*p = 0x100; 需要注意的是将地址0x12ff7c赋值给指针变量p的时候必须强制转换。 1.1 ...

2018-04-01 21:15:56 597

原创 如何判断变量在内存中如何放置的?低位在前还是高位在前

比如值为2的 int型在内存中数据是:00000010 00000000  00000000  00000000所以如下:int a=2;char *ca=(char*)&a;printf("%d",*ca);打印出来的是2,也就说低位在前。---------------------------------------------------------------------------...

2018-04-01 20:45:26 9786

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除