zoukankan      html  css  js  c++  java
  • 【LINUX】编程笔记

     

    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个多好,可以召唤龙珠了!

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

  • 相关阅读:
    Microsoft Prerelease Software Visual Studio Code Name "Orcas" January 2007 Community Technology Preview (CTP)
    Attribute Example In MSDN
    AutoEventWireup 20032005
    转ASP.NET中常用的优化性能方法
    转 用whitespace:nowrap;解决中文标签标签换行问题
    RBAC 模型初探[转]
    .net开源相关
    Path.GetExtension 方法
    应用程序注释规范
    Web.config的写入操作
  • 原文地址:https://www.cnblogs.com/learn-my-life/p/3915143.html
Copyright © 2011-2022 走看看