linux

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2011年9月19日

摘要: open("/dev/null",..)很多程序在一开始的时候要做这样的处理/** make sure we have stdin/stdout/stderr reserved*/while((t = open("/dev/null",O_RDWR)) < 3 && T >= 0)if(t >= 3) close(t)写入/dev/null的东西会被系统丢掉就像注释写的那样,对stdin/stdout/stderr进行保护代码中利用while先把文件描述符0,1,2分配出去,以后再分配的时候就不会将stdin/stdou 阅读全文
posted @ 2011-09-19 17:52 h13 阅读(2996) 评论(0) 推荐(0) 编辑

摘要: 线程创建1.1 线程与进程相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。在串行程序基础上引入线程和进程是为了提高程序的并发度,从而提高程序运行效率和响应时间。线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。1.2 创建线程POSIX通过pthread_create()函数创建线程,API定义如下:int pthread_create(pthread_t * thread, pthread_attr_t * attr... 阅读全文
posted @ 2011-09-19 16:31 h13 阅读(1460) 评论(0) 推荐(0) 编辑

摘要: 如何将stdin、stdout、stderr重定向到/dev/nullQ:我使用了如下代码将stdin、stdout、stderr重定向到/dev/nullfreopen("/dev/null","w",stdout);freopen("/dev/null","w",stderr);freopen("/dev/null","r",stdin);这样做正确吗,是否使用"w+"或者"a"更正确一些。在很多代码中是这样完成重定向的:close 阅读全文
posted @ 2011-09-19 14:24 h13 阅读(3936) 评论(0) 推荐(0) 编辑

摘要: 如何分析命令行参数Sun, 2006-07-16 01:27 — MarchdayGNU/Linux的命令行选项有两种类型:短选项和长选项,前者以 '-' 作为前导符,后者以 '--' 作为前导符。比如有一个命令:$ myprog -a vv --add -b --file a.txt b.txt - -- -e c.txt在GNU/Linux系统,对这种情况的一种合理解释是:a是短选项,带一个参数vv;add是长选项,无参数;b是短选项,无参数;file是长选项,带一个参数a.txt;b.txt是参数;-是参数,通常表示标准输入,stdin;--是一个指示符, 阅读全文
posted @ 2011-09-19 10:29 h13 阅读(1289) 评论(0) 推荐(1) 编辑

摘要: 下面的说明摘自于最新的Linux内核2.6.29,说明了strtok()这个函数已经不再使用,由速度更快的strsep()代替/** linux/lib/string.c** Copyright (C) 1991, 1992 Linus Torvalds*//** stupid library routines.. The optimized versions should generally be found* as inline code in <asm-xx/string.h>** These are buggy as well..** * Fri Jun 25 1999, 阅读全文
posted @ 2011-09-19 10:17 h13 阅读(30531) 评论(2) 推荐(4) 编辑