a storage class can only be specified for objects and functions

extern修饰一个struct报错,错误原因如上,C++中存储类修饰符有auto、register、extern、static,这几种修饰符只能修饰对象或者函数,这里用extern来修饰struct是错误的。
g++生成动态链接库的命令
-shared表示是标准对象,-fPIC表示函数能够重定向。
g++ -o libThreadPool.so -shared -fPIC ThreadPool.cpp -l pthread
g++调用本地动态库编译命令
-L指定动态库搜索路径,如果系统默认路径找不到,就到-L指定路径搜索
g++ -o testpool testpool.cpp -l ThreadPool -L ./
g++的命令中 -g生成调试信息以后,查看core时就可以bt查看调用堆栈
查看core信息
gdb a.out
core core.xxxxx
bt

此时可以p查看各个变量的值来更精确定位错误

查看文件链接的动态库信息
ldd execfile
同步/异步
同步和异步往往和线程有关系,比如SendMsg,线程A->线程B,发送消息后需要等待其他线程或进程的响应。
如果SendMsg以后线程A等待线程B返回响应消息,线程才继续处理,这就是同步
如果SendMsg以后线程A就继续做自己的事情,而注册了一个回调或者响应线程来处理线程B的响应消息,这就是异步
同步往往是阻塞的
异步往往是非阻塞的
阻塞/非阻塞
阻塞read:线程将阻塞,直到有可读的数据。
非阻塞read:设置O_NOBLOCK以后,如果fd没有可读的数据,read将立即返回-1并设errno为EAGAIN。
在有可读数据时阻塞与非阻塞read是一样的。
阻塞write:data从user-mode空间move到kernel-mode空间,之后系统完成kernel-mode到物理缓冲的处理并返回,然后阻塞IO返回。
非阻塞write:data从user-mode空间move到kernel-mode空间,write返回。
linux信号
linux向指定进程发指定信号
kill -s signal_name/signal_no  pid
 signal_number   sig Value
 0               0
 1               SIGHUP
 2               SIGINT
 3               SIGQUIT
 6               SIGABRT
 9               SIGKILL
 14              SIGALRM
 15              SIGTERM

 64位下的long长度是64
 linux下查看内存的方式
 x/100x 0x46505650
undefined reference to
可能依赖库的顺序不对
gdb调试信号,避免gdb把信号接管
handle SIGINT nostop print pass 
signal SIGINT 
子进程如何知道父进程是否退出
1.getppid,如果等于1表示父进程已经退出
2.注册信号,父进程退出时给子进程发送信号
3.管道处理,父进程和子进程建立管道,定时收发消息,通过管道保持联络
4.父进程锁一个文件,子进程检查锁,如果不能得到锁,说明父进程还在
nohup方式启动进程   nohup processname &  
以nohup方式启动,起到守护进程的作用

解决gcc乱码   LANG=en_us

gdb多进程调试
方法1:调试多进程最土的办法:attach pid
方法2: set follow-fork-mode child + main断点
方法3: set follow-fork-mode child + catch exec

最近最好玩的笑话:朋友想做一个包子,结果做成了锅盔,感慨道:包子呀,你注定做不了自己。

还有我那思路超级发散的媳妇,大家讨论说多招几个人,招够4个人就可以搓麻将了,她瞬间回了一句,招够7个多好,可以召唤龙珠了!

我是一个无趣的家伙,可我的生活很好玩,贱贱的朋友、萌哒哒的老婆、还有摄影师+大厨的朋友、还有还有......

【LINUX】编程笔记的更多相关文章

  1. Linux 编程笔记(三)

    上一章节对文件的基本属性做了一个笔记,续上次笔记对Linux文件的属性和属性组做一笔记 我安装的是虚拟机操作系统的版本还KaliLinux但是系统启动速度拖延,所以刚开始还是配置Centos 1.Li ...

  2. Linux 编程笔记(四)

    一.用户和用户组管理 添加新的用户账户使用useradd 格式useradd   选项  用户名 1.创建一个用户tian 其中 -d -m参数用来为登陆,登录名产生一个主目录 /usr/tian(其 ...

  3. linux 编程笔记 2

    1.使用create建立文件: #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include ...

  4. linux 编程笔记1 crusher for linux

    1.反显示字符crusher #include <stdio.h> int main (int argc, char *argv[]) { printf("\033[7m mor ...

  5. storysnail的Linux串口编程笔记

    storysnail的Linux串口编程笔记 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据Ge ...

  6. Linux网络编程笔记(修订版)

    我的网络编程笔记, 因为最近又要做Linux下的网络编程,故重新修订, 其中一些内容参考了文末的链接及文章 1.   基本概念 2.   基本接口 2.1.   打开一个socket 2.2.   将 ...

  7. 笔记整理--Linux编程

    linux c编程open() read() write()函数的使用方法及实例 | 奶牛博客 - Google Chrome (2013/8/31 17:56:10) 今天把文件IO操作的一些东东整 ...

  8. Linux内核笔记--深入理解文件描述符

    内核版本:linux-2.6.11 文件描述符(file descriptor)在Linux编程里随处可见,设备读写.网络通信.进程通信,fd可谓是关键中的关键. 深入理解可以增加我们使用它的信心. ...

  9. Linux 学习笔记

    Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...

  10. storysnail的Windows串口编程笔记

    storysnail的Windows串口编程笔记 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据 ...

随机推荐

  1. UVa 10780 (质因数分解) Again Prime? No Time.

    求mk整除n!,求k的最大值. 现将m分解质因数,比如对于素数p1分解出来的指数为k1,那么n!中能分解出多少个p1出来呢? 考虑10!中2的个数c:1~10中有10/2个数是2的倍数,c += 5: ...

  2. php yii .htaccess

    RewriteEngine on # if a directory or a file exists, use it directlyRewriteCond %{REQUEST_FILENAME} ! ...

  3. ti processor sdk linux am335x evm /bin/unshallow-repositories.sh hacking

    #!/bin/bash # # ti processor sdk linux am335x evm /bin/unshallow-repositories.sh hacking # 说明: # 本文主 ...

  4. noip2007提高组题解

    题外话:这一年的noip应该是最受大众关心的,以至于在百度上输入noip第三个关键字就是noip2007.主要是由于这篇文章:http://www.zhihu.com/question/2110727 ...

  5. H264 TS/ES

    ES流(Elementary Stream): 也叫基本码流,包含视频.音频或数据的连续码流.       PES流(Packet Elementary Stream): 也叫打包的基本码流, 是将基 ...

  6. 2014-LAMP兄弟连视频下载地址汇总

    linux 兄弟连2014年新版Linux视频教程百度网盘下载 http://pan.baidu.com/s/1kTsjVfx http://pan.baidu.com/s/1sjJf2OX 兄弟连2 ...

  7. Mac终端编译运行C++

    1.在编辑器中写好C++代码 2.打开终端打开文件对应的地址 3.用g++命令来编译.cpp文件 4.用./文件名来运行 观察文件的目录可发现 g++ 源文件名 编译源文件,产生a.out ./文件名 ...

  8. 【周期串】NYOJ-1121 周期串

    [题目链接:NYOJ-1121] 例如:abcabcabc 该字符串的长度为9,那么周期串的长度len只可能为{1,3,9},否则就不可能构成周期串. 接下来,就是要在各周期间进行比较.描述不清... ...

  9. Arrays.asList引起的惨案

    最近代码中需要对两个数组求交,想当然便用到了List中的retainAll函数,但要将将数组转换成list.代码如下: String[] abc = new String[] { "abc& ...

  10. [转] error LNK2026: 模块对于 SAFESEH 映像是不安全的

    原文 今天使用VS2012遇到一个问题:"链接器工具错误 LNK2026 XXX模块对于 SAFESEH 映像是不安全的" 解决方法: 1.打开该项目的“属性页”对话框. 2.单击 ...