Unix/Linux系统基础
文章平均质量分 72
NowDoIT
这个作者很懒,什么都没留下…
展开
-
strlen和sizeof的区别
1.strlen计算不包含终止null字节的字符串长度,而sizeof则计算包括终止null字节的缓冲区长度。2.strlen需继续一次函数调用,而sizeof在编译的时候就计算了缓冲区长度。 摘自:《UNIX环境高级编程》第二版,中文,P312.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~IFS是什么?使用命令查看原创 2011-11-14 10:15:20 · 396 阅读 · 0 评论 -
Linux/Unix如何只列出目录文件?!
方法比较多,如果不嫌折腾的话!这里奉献两个。1. ls -ld */2. ls -l | grep ^d原创 2011-11-10 09:58:55 · 625 阅读 · 0 评论 -
IPC通信常用宏定义及说明
Posix IPC概述消息队列信号量共享内存区头文件创建、打开或删除IPC的函数mq_openmq_closemq_unlinksem_opensem_closesem_unlinksem_inits原创 2011-11-10 10:58:20 · 701 阅读 · 0 评论 -
Unix/linue 創建新進程的方式
調用系統函數 system使用fork,運行指定的文件。原创 2011-12-07 10:01:30 · 454 阅读 · 0 评论 -
Linux僵尸進程詳細解析。附ps常見用法。
僵尸进程是指的父进程已经“異常退出”,而子进程dead之后没有进程接受,就成为僵尸进程.(zombie)进程,注意,是針對子進程來講的,而不是父進程。怎样产生僵尸进程的: 一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用 exit,它的作用是使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸原创 2011-11-24 14:32:48 · 1348 阅读 · 2 评论 -
僵尸進程和領養進程總結
關於僵尸進程,網上眾說紛紜,越看越迷糊!今天好好的整理一下!!!!進程fork出子進程,這是一切的前提!而且僵尸進程和領養進程都是針對子進程來講的,這一點要搞清楚。正常流程:第一:父進程終止時,內核逐級檢查所有活動的進程,以判斷它是否是正要終止進程的子進程,如果是,則將該進程的父進程改為init進程,保證了每個進程都是自己的父進程。注意,此時內核檢查的是“活動”的進程。這些進程被稱原创 2011-12-07 14:43:04 · 488 阅读 · 0 评论 -
Unix/Linux vi命令:字符串替换命令详解
vi/vim 中可以使用 :s 命令来替换字符串。以前只会使用一种格式来全文替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询。 :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky :n,$s/vivian/sky/ 替换第 n 行开始到转载 2011-12-19 17:10:49 · 2436 阅读 · 0 评论 -
测试硬盘读写速度的小程序
有时候,我们需要测试硬盘的写速度,来更好的设计软件。Unix/Linux系统有需要有意思的命令可以来完成这个时间,比如dd命令等;而windows平台,则可能需要copy一个大文件来手动观察具体的时间。为了统一和更精确的测试时间,试试下面的小demo。#include #include #include #include #include #include原创 2011-12-19 13:53:40 · 1827 阅读 · 2 评论 -
Unix/Linux 共享内存简单实例 (POSIX)
场景: 两个进程,A进程创建共享内存并读取数据;B进程连接共享内存写入数据。输入 end 结束进程。应用实例:头文件:shm_com.h#include #include #include #include #include #include #define TEXT_SZ 2048struct shared_use_st{ int w原创 2011-12-22 11:36:58 · 1321 阅读 · 1 评论 -
Unix/Linux 进程间通信之消息队列应用实例
场景: 进程A向消息队列写消息,而进程B则从消息队列读消息。消息队列和之前的管道不同,消息队列是相对独立于进程的,它不需要进程自己来提供同步方法。消息队列里面有消息就可以读。读取消息实例:msg_rcv.c#include #include #include #include #include #include struct my_msg_st {原创 2011-12-22 15:07:30 · 1292 阅读 · 0 评论 -
囘調函數詳解
囘調函數進階一:瞭解囘調函數調用函數:如果參數是一個函數指針,調用者可以傳遞一個函數的地址給實現者,即調用者提供一個函數但自己不去調用,而是讓實現者去調用它,這稱之為囘調函數。囘調函數示例:void func(void (*f)(void *),void *p);實現過程:調用者提供一個囘調函數,再提供一個準備傳遞給囘調函數的參數;把囘調函數傳給參數f,把準備傳給囘原创 2011-11-24 22:03:14 · 476 阅读 · 0 评论 -
Unix/Linux dbm 數據庫簡介
實例如下:#include #include #include #include #include #include #define TEST_DB_FILE "/tmp/dbm1_test"#define ITEMS_USED 3typedef struct test_data{ char misc_chars[15]; int any_int原创 2011-11-28 20:04:51 · 829 阅读 · 0 评论 -
Linux更改共享内存、信号量等IPC资源的方法
首先通过命令来查看共享内存的限制情况:# ipcs -lm同样的,信号量的查看命令为# ipcs -ls各字段含义说明:SHMMAX含义:单个共享内存段最大字节数设置:比SGA略大查看:# cat /proc/sys/kernel/shmmax1073741824修改:# sysctl -w kernel.shmmax=1073741824# ech转载 2011-11-16 15:02:24 · 1299 阅读 · 0 评论 -
Linux系统查看系统信息命令汇总(cpu、内存、硬盘、网卡)【附windows平台】
查看cpu信息 # cat /proc/cpuinfo说明: 1.process会从0开始计数,一直持续到结束。可以清楚的看到机器的cpu数目。 2.查看物理cpu关注physical id的值,该值相同的话则表示为同一颗CPU。 3.查看flag标志,如果有ht标志,则说明支持超线程技术。【详情见本文末尾】 常用的组合命令 1.查看原创 2011-11-16 14:16:24 · 7727 阅读 · 1 评论 -
待完成
郵件系統 軟件性能分析原创 2011-11-18 22:15:35 · 326 阅读 · 0 评论 -
驗證Unix/Linux最深目錄以及獲取文件路徑名的最大限制程序
源代碼如下:#include #include #include #include #include #define DEPTH 100#define MYHOME "/home/yaodl"#define NAME "abcdedfhighkelsmgskdiskcjsieksksjdkslsjdlsls"#define MAXSIZE 8192i转载 2011-11-22 22:18:40 · 897 阅读 · 0 评论 -
Unix/Linux glibc detected: free(): invalid next size (normal)问题的解决办法
出現了這種情況,多半是由於下面幾個原因引起的。【摘自網絡】1.free了未分配的內存。2.申請的內存未free。(個人覺得這個不太可能造成錯誤,只是會內存洩露)3.在申請的內存中進行了內存的越界操作。多見於數組、結構體循環處理的時候。下面用例子來驗證一下第三種情況。#include #include #include #include #define M转载 2011-11-23 21:04:21 · 4120 阅读 · 0 评论 -
Unix/Linux產生core文件的調試與core文件大小限制的修改
当我们的程序崩溃时,内核有可能把该程序当前内存映射到core文件里,方便程序员找到程序出现问题的地方。最常出 现的,几乎所有C程序员都出现过的错误就是“段错误”了。也是最难查出问题原因的一个错误。下面我们就针对“段错误”来分析core文件的产生、以及我们 如何利用core文件找到出现崩溃的地方。何谓core文件当一个程序崩溃时,在进程当前工作目录的core文件中复制了该进程的存储图像。co转载 2011-11-24 07:35:37 · 3872 阅读 · 0 评论 -
Unix/Linux函数unlink的作用,以及命令du和df的差别。
首先,創建一個比較大的文件,使用dd命令。dd if=/dev/zero of=/home/leon/tmpfile bs=1024 count=1048576這樣就創建了一個大小為1G的文件。執行下面的程序:#include #include #include #include int main(int argc,char **argv){ if(op原创 2011-11-24 08:54:36 · 1969 阅读 · 0 评论 -
Linux應用常用命令總結(od/cut/wc/dd/diff/uniq/nice/du等)
用戶常使用od命令來顯示查看特殊文件的內容:指令名稱:od語法:od [-abcdfhilovx][-A ][-j ][-N ][-s ][-t ][-w ][--help][--version][文件...]說明:按照指定的模式顯示文件內容(默認是按照八進制顯示的)。具體應用實例請自行 'man od' 來查看ps:按照十六進制來默認查看文件內容的命令是 hexdump。而od,原创 2011-11-18 21:12:25 · 2050 阅读 · 0 评论 -
Unix/Linux 获取文件系统目录的程序。附一篇。
代码:#include #include #include #include #include /* function type that is called for each filename */typedef int Myfunc(const char *,const struct stat *,int);static Myfunc myfunc;st转载 2011-11-21 22:49:07 · 642 阅读 · 0 评论 -
Unix/Linux 管道的简单应用- 客户端和服务端通信
场景描述: 多个客户端同时和服务端进行通信,客户端发送buf至服务端,服务端进程处理。将buf中的英文字母全部转为大写,之后返回给客户端。实现原理: 服务端以阻塞的方式打开一个命名管道(O_RDONLY),客户端以阻塞的方式打开这个管道(O_WRONLY)并写入数据。因为是阻塞方式,有数据进行写入,服务端才开始处理。至于是如何同步,是在open的时候处理的。服务端处理之原创 2011-12-21 17:33:07 · 981 阅读 · 0 评论