随笔分类 - unix C
摘要:rename()函数将文件或文件夹(linux中文件和文件夹不能重名)的名字修改并移动。如下边的例子中,将当前文件下的名字为1的文件或者文件夹移动为前一级文件leeTest下的2文件或文件夹。前提是leeTest文件下不能有2这个文件或文件夹,否则程序运行失败。#include <stdio.h>int main(){ printf("rename\n"); int flag = rename("./1", "../leeTest/2"); printf("%d\n", flag); return 0;
阅读全文
摘要:函数说明:int ftw(const char *dirpath,int (*fn) (const char *fpath, const struct stat *sb,int typeflag), int depth);ftw() 会从参数dirpath指定的目录开始,往下一层层地递归式遍历子目录。ftw()会传三个参数给fn(), 第一个参数*fpath指向当时所在的目录路径,第二个参数是*sb, 为stat结构指针,第三个参数为flag,有下面几种可能值 FTW_F 一般文件 FTW_D 目录 FTW_DNR 不可读取的目录,此目录以下将不被遍历 FTW_SL 符号连接 FT...
阅读全文
摘要:1、句柄层次:Environment Handle环境句柄Statement Handle表达句柄Error Handle错误句柄Service Context Handle服务上下文句柄Define Handle查询输出定位句柄Bind Handle输入输出绑定变量句柄Server Handle服务器句柄User Session Handle 用户会话句柄Transaction Handle事务句柄2、连接 ORACLE数据库流程OCI 连接过程比较复杂,除了分配设置各个基本句柄外,还要明确彼此之间的联系,大致流程如下:创建环境句柄: OCIEnvCreate(&envhp, …);
阅读全文
摘要:多用于告警提示:__FILE__ 包含当前程序文件名的字符串__LINE__ 表示当前行号的整数__DATE__ 包含当前日期的字符串__STDC__ 如果编译器遵循ANSI C标准,它就是个非零值__TIME__ 包含当前时间的字符串代码示例如下:#include <stdio.h>int main(){ printf("file name is %s\n", __FILE__); //文件名 printf("line is %d\n", __LINE__); //行号 printf("date is %s\n", __
阅读全文
摘要:实现实例如下:#include <stdio.h>#include <time.h>int main(){ time_t now; //time_t实际为长整形 struct tm *w; //tm结构体结构化存放时间 time(&now); w=localtime(&now); //获取当前系统时间 printf("%04d/%02d/%02d\n%02d:%02d:%02d\n",w->tm_year+1900, w->tm_mon+1,w->tm_mday,w->tm_hour,w->tm_min,
阅读全文
摘要:此文转自网友,本人只做了将两篇文章合并。各个文章原始作者不详。拒绝盗版。_exit终止调用进程,但不关闭文件,不清除输出缓存,也不调用出口函数。exit函数将终止调用进程。在退出程序之前,所有文件关闭,缓冲输出内容将刷新定义,并调用所有已刷新的“出口函数”(由atexit定义)。‘exit()’与‘_exit()’有不少区别在使用‘fork()’,特别是‘vfork()’时变得很突出。‘exit()’与‘_exit()’的基本区别在于前一个调用实施与调用库里用户状态结构(user-mode constructs)有关的清除工作(clean-up),而且调用用户自定义的清除程序(译者注:自定义清
阅读全文
摘要:转自:http://blog.csdn.net/maopig/article/details/73066391.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历TIME_WAIT的过程:BOOL bDontLinger = FALSE;setsockopt(
阅读全文
摘要:在Linux下面无法使用上下键,退格键都不能用。今天发现了这个rlwrap这个好东西,特写此文记录。由于时间关系,可以从这里下载安装包。下载后,将.zip扩展名去掉,传到Linux服务器上面。 先装上一些安装rpm一:安装readline http://img1.51cto.com/attachment/200912/1081650_1261836999.zip# rpm -Uvh readline*error: Failed dependencies: libtermcap-devel is needed by readline-devel-5.1-1.1.i386.rpm# rpm -Uv
阅读全文
摘要:http://blog.sina.com.cn/s/blog_818dc7aa0100v3n3.html操作共享内存,我们用到了下面的函数==============================================#include <sys/types.h>#include <sys/ipc.h>#include <sys/shm.h>int shmid = shmget( key_t shmkey , int shmsize , int flag );(void *)shmaddr = shmat( int shmid , char *sh
阅读全文
摘要:系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下:key_t ftok( char * fname, int id )fname就时你指定的文件名(该文件必须是存在而且可以访问的),id是子序号,虽然为int,但是只有8个比特被使用(0-255)。当成功执行的时候,一个key_t值将会被返回,否则 -1 被返回。 在一般的UNIX实现中,是将文件的索引节点号取出,前面加上子序号得到key_t的返回值。如指定文件的索引节点号为65538,换算成16进制为 0x010002,而你指定的ID值为38,换算成16进制为0x26,
阅读全文
摘要:关于Linux中select的一个简单事例:#include <stdio.h>#include <sys/select.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>int main(){ int keyboard; int ret; fd_set readfds; char key; struct timeval timeout; char *path = "/dev/tty"; k
阅读全文
摘要:管道一般用与父子进程之间通信,下面是一个简单的父子进程通信事例:#include <unistd.h>#include <stdio.h>int main(){ int fd[2]; //管道入口fd[0]为读,fd[1]为写入口 char r_buf[100]; char w_buf[20]= "hello word!"; pid_t pid; if(pipe(fd) < 0) //新建管道 { printf("pipe error!\n"); exit(1); } if((pid = fork()) < 0) {
阅读全文
摘要:直接看代码#include <unistd.h>#include <stdio.h>#include <signal.h>void myfunc(){ printf("myfunc\n"); exit(0); //如果没有此句,程序在主函数中继续运行,输出never run}int main(){ unsigned int i; int time; alarm(9); sleep(2); time = alarm(0); //闹钟取消,返回剩余时间,每次只能有一个闹钟生效 printf("dd%d\n",time);
阅读全文
摘要:首先是对makefile的理解: 它是一个规则,用来确定如何编译链接c/c++文件。它实现的机制类似于宏,整个过程可以理解为递归方式,一个一个目标实现。(生成的文件为test1和test2都是可执行文件,在linux中后缀名不是很重要)如下面这段简单的makefile,解释如注释。all:rest1 rest2 //目标为all,由rest1和rest2组成 //,当运行时就会去先查找rest1再查找rest2rest2:io.o test.o //test2由io.o和test.o生成 gcc io.o test.o ...
阅读全文