- 博客(42)
- 收藏
- 关注
原创 linux的system函数
下面为system函数的一种实现:#include #include #include int system(const char *cmdstring){ pid_t pid; int status; if(cmdstring == NULL) //system接受命令为空时直接返回
2012-11-30 19:41:56 870
原创 linux ps 命令详解
linux上进程有5种状态:1. 运行(正在运行或在运行队列中等待)2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号
2012-11-30 15:23:41 1167
原创 UNIX环境高级编程--第七章进程环境总结
1.C程序总是从main函数开使执行的----当内核执行C程序时,在调用main函数前先调用一个特殊的启动例程.可执行文件将此例程指定为程序的起始地址,--这是有连接编辑器设置的,而连接编辑器则由C编译器(通常是cc)调用. -------启动例程从内核取得命令行参数和环境变量值,然后为调用main函数作好准备.2.当执行一个程序时,调用exec的进程可将命令行参数传递给该新程序.3.每个
2012-11-29 18:36:33 568
原创 getopt()函数的使用方法
1.头文件: #include 2.函数原型: int getopt(int argc, char * const argv[], const char *optstring);extern char *optarg; //如果选项接受参数的话,那么optarg就是选项的参数指针extern int optind, //下一次调用getopt的时,从optind存储的位置处重
2012-11-27 22:55:57 694
原创 strdup()函数的用法
函数原型:extern char *strdup(char *str)参数说明:str待复制的字符串。 所在库名:#include 函数功能:实现复制字符串str。 返回说明:返回复制的新字符串的指针,复制失败返回NULL。例子:#include #include int main(){ char *s = "I come
2012-11-27 22:21:45 963
原创 使用mtrace()函数检内存溢出
对于内存溢出之类的麻烦可能大家在编写指针比较多的复杂的程序的时候就会遇到。Linux系统下有一个工具可以帮忙调试,这就是mtrace。mtrace主要能够检测一些内存分配和泄漏的失败等。下面我们来学习一下它的用法(man mtrace)1.在需要跟踪的程序中需要包含头文件,而且在main()函数的最开始包含一个函数调用mtrace()。由于在 main函数的最开头调用了mtrace(),所以该
2012-11-27 20:26:29 2426 1
转载 计算机方向期刊和会议
CORE Computer Science Conference RankingsAcronymStandard NameRankAAAINational Conference of the American Association for Artificial IntelligenceA+AAMASInternational C
2012-11-27 16:35:39 5570
转载 小蜜蜂轻易破解数学大难题“旅行商问题”
英国一项最新研究说,在花丛中飞来飞去的小蜜蜂显示出了轻易破解“旅行商问题”的能力,而这是一个吸引全世界数学家研究多年的大问题,如能理解蜜蜂的解决方式,将有助于人们改善交通规划和物流等领域的工作。“旅行商问题”常被称为“旅行推销员问题”,是指一名推销员要拜访多个地点时,如何找到在拜访每个地点一次后再回到起点的最短路径。规则虽然简单,但在地点数目增多后求解却极为复杂。以42个地点为例,如果要列举所
2012-11-26 12:05:33 2718
原创 UNIX环境高级编程--第三-四章总结
1.对于内核,所有打开的文件都通过文件描述符(一个非负数)引用, 文件描述符0与进程的标准输入(stdin)向关联------0被替换为STDIN_FILENO 文件描述符1与进程的标准输入(stdout)向关联------1被替换为STDOUT_FILENO 文件描述符2与进程的标准输入(stderr)向关联------2被替换为STDERR_FILENO2
2012-11-26 10:04:23 692
原创 UNIX环境高级编程--第一章总结
1.shell是一个命令行解释器,它读取用戶输入,然后执行命令.用戶通常用终端(交互式shell),有时通过文件(称为shell脚本,shell script)向shell进行输入.2.stat和fstat函数返回包含所有文件屬性的一个信息结构.3.目录是一个包含许多目录项的文件,在邏辑上可以认为每个目录项都包含一个文件名,同时还包含说明文件屬性的信息.(目录项的邏辑视图与实際存放在磁盘上
2012-11-25 22:22:19 583
原创 waitpid()函数
表头文件 #includesys/types.h> #include 定义函数 pid_t waitpid(pid_t pid,int * status,int options);函数说明 waitpid()会暂时停止目前进程的执行,直到有信号来到或子进程结束。如果在调用 waitpid()时子进程已经结束,则 waitpid()会立即返回子进程结束状
2012-11-25 19:52:19 597
原创 利用比特操作知道你机器的字长
#include #include int wordlength(void);int main(){ printf("%d\n", wordlength()); return 0;}int wordlength(void){ int i; unsigned v = (unsigned) ~0; f
2012-11-25 15:29:48 575
原创 C中关于sin(),cos(),pow()函数使用的一个问题
#include #include int main(){ double x = 3.1415926 / 2; double tmp = sin(x); printf("result = %g\n", tmp); double a = 2, b = 1; tmp = pow(a, b); p
2012-11-24 21:16:43 1237
原创 C中system()函数使用的小例子
#include #include int main(){ printf("THE DIRECTORY NOW:\n"); system("pwd"); printf("The date\n"); system("date"); return 0;}输出为:THE DIRECTORY NOW:/
2012-11-24 15:02:48 882
原创 一道Intel的笔试题
#include #include #include int main(){ fprintf(stdout, "Hello "); fprintf(stderr, "World!"); return 0;}这个程序的输出是什么?答案:World!Hello为什么这样 ?存在三种缓冲策略:(1)无缓冲:信息在写的同
2012-11-23 22:44:21 671
原创 如何使用gdb调试程序
1.把调试信息加到可执行文件中,使用编译器的-g参数.如 : gcc -g hello.c -o hello2.最简单的启动方法:(其他方法可使用 gdb help查看)gdb 其中promgram为第一步生成的可执行文件.3.进入gdb调试环境后,可使用相关gdb命令开始调试程序(gdb的命令可以用help来查看)gdb的调试命令很多可以使用 help 来查看一
2012-11-23 14:23:05 1358
原创 关于PVFS状态机的声明和定义---src/common/misc/state-machine.h
/* State machine control block - one per running instance of a state * machine */typedef struct PINT_smcb{ /* state machine execution variables */ int stackptr; struct PINT_state_s *cu
2012-11-22 13:15:24 690
原创 C中violatile的用法
1.violate影响编译器结果的输出,violate变量随时可能发生变化,与violate有关的运算不要进行编译优化,以免出错.例如:volatile int i=10;int j = i;...int k = i; violate告诉编译器变量i是随时可能发生变化的,每次使用i必须从i的地址中读取,因而编译器生成的可执行码会重新从i的地址读取数据放在k中.而优化的做法是,由于编译
2012-11-20 15:35:26 3991
转载 static函数的作用
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variablev
2012-11-20 14:44:46 1439
原创 C中的strncat()函数
函数原型:extern char *strncat(char *dest,char *src,int n)参数说明:src为源字符串,dest为目的字符串,n为指定的src中的前n个字符。 所在库名:#include 函数功能:把src所指字符串的前n个字符添加到dest结尾处,覆盖dest结尾处的'/0',实现字符串连接。 返回说明:返回指针,连接
2012-11-16 19:16:53 823
原创 C中的stat()函数
需要的头文件:#include #include 函数定义:int stat(const char * file_name, struct stat *buf);函数说明:用于将参数file_name所指的文件状态复制到参数buf所指的结构中.
2012-11-16 18:38:53 1902
原创 C中strtok()函数和strtok_r()函数
1.函数名:strtok功能:查找由第二个串指定的分界符分开的单词用法:char *strtok(char *str1, char *str2)一个例子:#include #include #include int main(){ char input[16] = "abc,d"; char *p;
2012-11-16 12:10:29 16298 1
原创 C中getenv()函数
函数名: getenv功 能: 从环境中取字符串,获取环境变量的值 头文件: stdlib.h 用 法:char *getenv(char *envar); 函数说明:getenv()用来取得参数envar环境变量的内容。参数envar为环境变量的名称,如果该变量存在则会返回指向该内容的指针。返回值: 执行成功则返回指向该内容的指针,找不到符合的环境变量名称则返回N
2012-11-16 09:47:48 2427
原创 C中指针使用
1.char amessage[] = "now is the time"; /*定义一个数组*/char *pmessage = "now is the time"; /*定义一个指针*/二者有很大的区别:amessage是一个仅仅足以存放初使化字符串数组以及空字符'\0'的一維数组.数组中的单个字符可以进行修改
2012-11-15 16:18:18 707
原创 C中有效的指针运算
有效的指针运算包括四种1.相同类型指针之间的赋值运算2.指针同整数之间的加法或减法运算3.指向相同数组中元素的两个指针之间的减法或比较运算4.将指针赋值为0或指针与0之间的比较运算tips:1.指针是一个变量,但数组名不是一个变量,类似a=pa和a++形式的句子都是非法的.2.指针和整数之间不能相互转换,但0是唯一的例外:常量0可以赋值给指针,指针也可以
2012-11-15 15:48:37 846
原创 C中union的用法
在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n 选1”),我们也可以使用联合体来发挥其长处。首先看一段代码:union myun{struct { int x; int y; int z; }u;int k;}a;int main(){a.u.x =4;a.u.y
2012-11-14 15:34:30 946
原创 一个将十六进制转换成十进制的小例子
#include #include #include #include int main(){ int i, j, len, sum = 0; char s[1000]; //store the 0x number you input printf("Please input the nu
2012-11-11 13:52:21 1732
原创 C中确定整型的范围
#include int main(){ printf("signed int min = %d\n", -(int)((unsigned int) ~0 >> 1)); printf("signed int max = %d\n", (int)((unsigned int) ~0 >> 1));}(1)先把数字0的各个二进制位全部转换成1~0
2012-11-10 22:30:51 1007
原创 C中访问文件的基本操作
1.在读写一个文件之前,必须通过库函数fopen打开该文件.fopen用外部文件名与操作系统进行某些必要的连接和通信,并返回一个随后可以用于文件读写操作的指针.声明一个文件指针fp:FILE *fp;FILE *fopen(char *name, char *mode);注:FILE像int一样是一个类型名,而不是结构标记.name是文件名,mode为访问模式,包括:读("r"
2012-11-10 17:31:38 1158
转载 如何合理利用时间
每天90分钟阅读(给自己制定一个读书计划,比如每月精读5本书、泛读20本书,书籍的比例:20%专业书籍和文献、20%百科书籍、20%历史人文艺术书籍、20%经济管理书籍、20%国学佛学经典书籍)。每天15分钟浏览自己所在或关心的专业领域新闻,写出至少一条一句话的点评。每天30分钟晨练(跑步、快走、武术、瑜伽等及其他)。每天30分钟外语听力训练。每天10个新单词,40个复习单词。
2012-11-10 17:25:53 914 1
原创 main函数参数要注意的地方
int main(int argc, char *argv[])也可以写成 int main(int argc, char **argv)其中argc为参数个数+1,argv[]是一个数组如下:如有一个可执行文件a.我们执行它的形式为: ./a t1 t2 t3那么argc = 4, argv[0] = ./a, argv[1] = t1, argv[2] = t2, a
2012-11-10 15:22:31 473
原创 getchar()与putchar()的简单使用
先看一个小例子(ctrl+z终止):#include int main(){ int c; c = getchar(); while(c != EOF) { putchar(c); c = getchar(); }
2012-11-10 11:33:43 7066 1
原创 MPI并行编程缓冲通信框架
#include "..."#include int main(int argc, char *argv[]){ int rank, size, s1, s2, bufsize; char *buf; ...; MPI_Init(&argc, &argv);
2012-11-09 13:47:42 3827
原创 MPI并行编程简介---一个简单的事例
标准通信模式--阻塞方式//mpitest.c#include "mpi.h"#include #include #define buf_size 10int main(int argc, char *argv[]){ int myid, numprocs, other, sb[buf_size], rb[buf_size]; MPI_Sta
2012-11-09 13:09:36 3390
原创 ubuntu的一个截图工具scrot
1.安装 sudo apt-get install scrot2.使用:抓取桌面 scrot desktop.png抓取窗口:scrot -bs window.png,选项 b 使 scrot 在抓取窗口时一同将外边框抓取下来,而 s 选项则让用户选择所要抓取的是何窗口。抓取区域:scrot -s rectangle.png,在执行此命令后,使用鼠标拖曳的矩形区域将被 scro
2012-11-09 12:06:34 477
原创 vim常用命令
1.ctrl+f 前进到下一页,ctrl+b 回到前一页(按ESC后在命令模式下)2.yy 复制光标所在整行,p 粘贴到光标后,dd 删除一整行(按ESC后在命令模式下)3.:q! 强制退出, :wq!--强制保存退出 4./string 向下查找字符串 ?string向下查找 (命令行模式)5.:set nu 显示行号, :s
2012-11-09 10:39:57 391
原创 vim+cscope+ctags+Tlist使用
1.在源代码目录下生成索引文件(两条命令)(需要先下载cscope,ctags,Taglist)make cscopemake tags2.编写一个脚本文件(cs.sh)来更新cscope和ctags的索引文件#!/bin/shfind . -name "*.h" -o -name "*.c" -o -name "*.cc" > cscope.filescscope -bk
2012-11-08 22:34:07 920
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人