
UNIX/linux
长山的随笔
AI Agent infra方向创业,ex 淘宝 阿里云,公众号同名
展开
-
APUE学习笔记——进程环境
在main中调用exit(1)和reutrn 1是等价的。内核启动一个进程的唯一的方法是调用exec,用户程序终止进程的唯一方法是显示或者隐式的调用_exit或者_EXIT。每个进程都会有一个进程表。进程表是一个全局的指针:environ。extern char **environ可以查看这个环境表。另外,可以通过getenv和putenv来获取修改环境表。写个程序试一下。linux的段:linu原创 2012-07-03 11:23:28 · 2695 阅读 · 0 评论 -
UNIX环境高级编程笔记——高级IO,进程间通信,套接字,高级进程间通信
14 高级IO非阻塞IO:这里我要抽时间看看AIO的使用。记录锁:运行一个进程修改一个文件的一部分的时候,禁止其进程修改统一区域。流在用户经常和设备驱动程序间提供了一个全双工通道。readv和writev:散布读和聚集写。散布读:将文件中的数据一次读到多个缓冲区中;聚集写:将多个缓冲区的数据一次写到文件中。好处是完成统一的操作,可以使用更少的系统调用。readn和writen向管道,fifo,终端原创 2014-03-15 20:54:46 · 3772 阅读 · 0 评论 -
APUE学习笔记——线程控制
线程属性使用的是结构体ptread_attr_t,它对应用程序是不透明的,这样可以增强程序的可移植性。 可以使用ptread_attr_init进行初始化,使用ptread_attr_destroy进行反初始化(类似于释放操作)。两者必须配对出现。 如果要修改ptread_attr_t,必须调用相应的函数。 如果不关心线程的终止状态,可以将线程设置成分离状态(PTREAD_CRETE_DETACH原创 2013-03-02 21:46:26 · 2745 阅读 · 0 评论 -
APUE学习笔记——线程
采用多线程模式可以采用同步编程,而非异步编程,可以简化编程;多个进程间可以很方便的共享数据; 可以通过pthread_self获得自身的线程ID。线程ID只在进程内部唯一。 新创建线程不能保证那个线程先运行,新县城可以访问进程的地址空间,继承线程的浮点环境和信号屏蔽字。 如果任意一个线程调用:exit,_Exit,_exit,进程都会终止。 线程终止方式:1)从启动函数中返回,返回值就是线程的退出原创 2013-03-02 21:43:32 · 3205 阅读 · 0 评论 -
如何查看进程的实际的内存占用
top命令可以查看进程内存的使用,但是不够详细。还有一些命令可以进行更加详细的查看。[root@localhost ~]# cat /proc/5606/statusName: switch4State: S (sleeping)Tgid: 5606Pid: 5606PPid: 1TracerPid: 0Uid: 0 0 0原创 2012-09-20 21:30:21 · 18286 阅读 · 0 评论 -
APUE学习笔记——进程控制
1. getpid可以获取进程id。getppid可以获取进程调用进程的id。 2. fork函数:一次调用,两次返回:返回0是在子进程中。返回其他值在父进程中。如果大于0为子进程id;否则失败。 3. 子进程获得了父进程的数据空间(DATA,BSS),堆,栈的副本。进程之间共享正文段。 4. 目前的实现一般不进行全部复制,而实现的是写时复制:及经常只读共享部分,一个进程去更改一块内存是,为这块内原创 2012-09-20 21:27:20 · 2016 阅读 · 0 评论 -
c初学者练习程序需求
所有程序基于linux平台。1、文件夹和目录拷贝工具制作一个工具,可以拷贝文件和目录。可以通过命令:cp filesrc filedst,将源文件filesrc复制为filedst。2、训练文件操作和字符串处理。文件读写以及字符串处理在c中应用很多。特别是字符串的拷贝,链接,查找等等。训练的题目是配置文件的读写:有一个配置文件:test.ini,格式及内容如下:#表示后面的内容是注释db_ip =原创 2012-07-16 21:37:07 · 2703 阅读 · 1 评论 -
python perl脚本经过cvs提交后无法直接执行解决
python perl脚本经过cvs提交后无法直接执行python perl脚本经过cvs提交后无法直接执行原因是windows下换行和linux下换行时不一样的。而Eclipse在提交的时候,设置的又是ASCII格式。解决的方法是:1、设置Eclipse工程属性,换行类型为Unix2、设置Eclipse的cvs属性:把脚本的类型设置为二进制,而不是ASCII。如果已经是无法执行了,可以通过下面的原创 2012-07-03 11:34:43 · 1943 阅读 · 0 评论 -
实际测试下文件IO,有一个感性认识
环境(戴尔服务器):cpu:4核3.1GHZ; 内存:4G 1. 写文件速度测试结果(测试时间:10S)环境:死循环进行写文件,随着循环轮询每个文件,每次循环把内容写入轮到的这个文件条件(轮询写文件的个数)结果(文件大小总和:单位G)11.5021.441001.395001.3510001.3120001.2430001.2050001.15上面是单线程模式。后面又尝试了一下多线程原创 2012-07-03 11:28:29 · 2197 阅读 · 0 评论 -
timerfd使用总结
timerfd是Linux为用户程序提供的一个定时器接口。这个接口基于文件描述符,通过文件描述符的可读事件进行超时通知,所以能够被用于select/poll的应用场景。timerfd是linux内核2.6.25版本中加入的借口。timerfd、eventfd、signalfd配合epoll使用,可以构造出一个零轮询的程序,但程序没有处理的事件时,程序是被阻塞的。这样的话在某些移动设备上程序更省电。原创 2014-03-15 20:27:16 · 29690 阅读 · 3 评论