2014年6月15日

摘要: dup与dup2函数用于复制现存的文件描述符。原型:#include int dup(int fd);int dup2(int fd, int fd2);两函数若成功则返回新描述符,出错则返回-1。dup函数返回一个新的描述符,并且这个新描述符一定是可用描述符中数值最小的一个。dup2函数使用fd2... 阅读全文
posted @ 2014-06-15 13:36 gradliang 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 原子操作一、添写到文件 早期的UNIX的open函数里面,不支持O_APPEND的选项。所以要追写到文件结尾处,必须先利用lseek把文件偏移量移到文件的结尾处,再进行write操作。 如果当前进程A刚执行完lseek后,系统进程调度作用切换到了另一个进程B,进程B对同一个文件进行了写操作。进程B写... 阅读全文
posted @ 2014-06-15 13:34 gradliang 阅读(1301) 评论(0) 推荐(0) 编辑
摘要: lseek 函数:原型:#include off_t lseek(int filedes, off_t offset, int whence);filedes 为文件描述符。offset带符号的为偏移量,off_t有可能是32位,也有可能是64位。当whence是SEEK_SET,则将偏移量设置为距... 阅读全文
posted @ 2014-06-15 13:20 gradliang 阅读(433) 评论(0) 推荐(0) 编辑
摘要: write 函数:调用write函数可以从打开的文件中写数据。原型:#include ssize_t write(int filedes, const void* buf, size_t nbytes);返回值:若成功则返回读写入的字节数,返回值要与nbytes相同。如果返回值与nbytes不相同,... 阅读全文
posted @ 2014-06-15 13:18 gradliang 阅读(482) 评论(0) 推荐(0) 编辑
摘要: read 函数:调用read函数可以从打开的文件中读取数据。原型:#include ssize_t read(int filedes, void* buf, size_t nbytes);返回值:若成功则返回读取到的字节数,文件的偏移量将增加至实际读取的字节数,若到了文件末尾返回0,出错返回-1。很... 阅读全文
posted @ 2014-06-15 13:12 gradliang 阅读(282) 评论(0) 推荐(0) 编辑

2013年5月29日

摘要: open/close/create函数:原型:#include int open(const char * pathname, into oflag, … /*mode_t mode*/ );pathname为需要打开或者创建的文件名。oflag参数说明此函数的多个选项。mode是可选参数,用于同步... 阅读全文
posted @ 2013-05-29 15:24 gradliang 阅读(194) 评论(0) 推荐(0) 编辑

2013年5月22日

摘要: Unix C函数的的出错处理:Unix函数调用后出错,通常会返回一个负数值,也有可能返回NULL等,这需要根据具体函数而定。 Unix函数出错后,都会把出错的原因保存在一个叫errno的变量里面,头文件中声明了errno变量,以及各种以E开头的出错常量值定义。 errno也有可能扩展成一个可以修改的... 阅读全文
posted @ 2013-05-22 15:35 gradliang 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 打印当前进程ID,用户ID,组ID:#include #include int main(int argc, char ** argv){printf("current PID = %d\n", getpid());printf("current User ID = %d\n", getuid())... 阅读全文
posted @ 2013-05-22 14:01 gradliang 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 从标准输入读取命令并执行:#include #include #include int main(int argc, char ** argv){charbuf[MAXLINE];pid_tpid;intstatus;printf("%% ");while (fgets(buf, MAXLINE, ... 阅读全文
posted @ 2013-05-22 13:45 gradliang 阅读(202) 评论(0) 推荐(0) 编辑

2013年5月21日

摘要: 将标准输入复制到标准输出:#include #include #define BUFFSIZE 4096int main(int argc, char ** argv){ int n; char buf[BUFFSIZE]; while ((n = read(STDIN_FILENO, buf, B... 阅读全文
posted @ 2013-05-21 17:28 gradliang 阅读(145) 评论(0) 推荐(0) 编辑

导航