
Linux & Unix
gpengtao
互联网开发
展开
-
linux守护进程 编写要点
守护进程(Daemon)是运行在后台的一种特殊进程,脱离于终端。它在执行过程中产生的信息也不会在终端上显示。守护进程周期性地执行某种任务或等待处理某些事件的发生。Linux的大多数服务器就是用守护进程实现的。编写要点:(最后有完整示例)1.屏蔽一些有关终端操作的信号。这是为了防止在守护进程还没有正常运行起来前,受到终端干扰退出或者挂起。代码:signal(SIGTTOU, SIG_IG原创 2012-08-21 11:15:41 · 2545 阅读 · 0 评论 -
ioctl()函数获取本机IP、MAC
#include int ioctl(int d, int request, ...);/* Socket configuration controls. */#define SIOCGIFADDR 0x8915 /* get PA address */#define SIOCSIFADDR 0x8916 /* set PA address */#define SIOCGI原创 2012-08-30 18:29:22 · 17301 阅读 · 0 评论 -
linux 睡眠函数——sleep(),usleep()
#include unsigned int sleep(unsigned int seconds);//睡眠秒返回值:成功返回0,或者返回剩余的要睡眠的秒数(被signal中断后).int usleep(useconds_t usec);//睡眠微秒返回值:成功返回0,出错返回-1.useconds_t == unsigned int秒的进制:1秒 (s)= 1原创 2012-08-20 17:02:35 · 55534 阅读 · 0 评论 -
getopt()函数用法
getopt() 函数原型:getopt() 函数,以及配合其使用的全局变量#include int getopt(int argc, char * const argv[], const char*optstring);extern char *optarg; //选项的参数指针extern int optind; //下一次调用getopt的时,从opti原创 2012-05-16 10:49:50 · 1148 阅读 · 0 评论 -
线程与信号
总结:signal()设置对某种信号的处理方式,只能有一种处理方式,即设置进程、线程的信号handler,对进程、线程都有效。pthread_kill()可以向线程发送信号。pthread_sigmask()设置线程的阻塞信号集,但是仅仅对该线程有效。kill()向进程发送信号,由哪个线程处理该信号是未知的。可能发生的情况是,进程本身屏蔽了该信号,而某个线程没有屏蔽改信号,进而该线原创 2012-08-29 17:58:06 · 3464 阅读 · 1 评论 -
linux 信号 意义
信号 默认动作 信号产生的原因SIGHUP 终止进程 终端线路挂断SIGQUIT 建立CORE文件 终止进程,并且生成core文件SIGILL原创 2012-08-17 22:27:12 · 1558 阅读 · 0 评论 -
linux 信号signal
一.信号的分类:1.kill–l //列举所以信号2.不可忽略信号: SIGKILL,SIGSTOP。二.信号的发送:kill()、raise()、 sigqueue()、alarm()、setitimer()以及abort()1. kill#include #include int kill(pid_t pid, int signo);向某个进程发送信号,参数为进程id和信号的原创 2012-07-09 10:13:18 · 1620 阅读 · 0 评论 -
fork,vfork,system
1.fork()函数#includepid_t fork(void);创建一个子进程。正确返回:父进程中返回子进程的进程号;子进程中返回0;(返回两次,父进程和子进程中各返回一次)错误返回:-1;(父进程中返回)2.vfork()函数#includepid_t vfork(void);创建一个子进程,阻塞父进程。vfork创建新进程的主要目的在于用exec函数执原创 2012-07-11 14:04:17 · 3340 阅读 · 2 评论 -
exit 和 _exit
函数声明:#include void exit(int status);void _Exit(int status);//等同于_exit #include void _exit(int status);eixt和_exit的比较:exit:1.退出程序;2.处理所有I/O缓冲区,然后关闭文件;3.调用atexit、on_exit注册的函数。原创 2012-08-12 22:07:07 · 1395 阅读 · 0 评论 -
linux进程状态
1.R: TASK_RUNNING,正在运行或者处于就绪状态很多操作系统教科书将正在CPU上执行的进程定义为RUNNING状态、而将可执行但是尚未被调度执行的进程定义为READY状态,这两种状态在linux下统一为 TASK_RUNNING状态。例子:ps -aux //会看到ps这个程序命令的运行状态是R,+一会再说2.S :TASK_INTERRUPTIBLE,可中断的睡眠状态进程因为原创 2012-08-13 01:12:15 · 1698 阅读 · 0 评论 -
pthread_attr_init 线程属性
我们一般创建线程是这样 pthread_t tid;pthread_create(&tid, NULL, func, NULL);第二个参数是线程属性设置,一般设置为了NULL,但是可以通过系统API进一步设置第二个参数,细化创建的线程的属性。 大致步骤为:pthread_attr_t attr;pthread_attr_init(&attr);pthread_at原创 2012-07-27 11:33:28 · 9251 阅读 · 1 评论 -
mq_open()函数的 attr 参数错误问题
man mq_open显示:mqd_t mq_open(const char *name, int oflag);mqd_t mq_open(const char *name, int oflag, mode_t mode,struct mq_attr *attr);可见,该函数的用法有两种,2个或者4个参数,然而,第二种用法中指定的参数 struct mq_attr *attr原创 2012-05-16 10:02:39 · 6355 阅读 · 2 评论 -
getc,getchar,getch,getche
Windows平台下:#include int getc(FILE *_File); //从文件中读取一个字符,文件位置指示器后移一个int getchar(void); //从stdin读取一个字符,回显(就是屏幕上显示输入的字符),等到输入的回车才结束,只取输入的第一个字符#include int getch(void);原创 2012-07-11 18:12:46 · 1167 阅读 · 0 评论 -
Linux errno 错误对照表
errno 在 中定义,错误 Exx 的宏定义在 /usr/include/asm-generic 文件夹下面的 errno-base.h 和 errno.h,分别定义了 1-34 、35-132 的错误定义。strerror() 函数依据 errno 值返回错误描述字符串,下面程序打印对照表:#include #include #include int main(){原创 2012-05-10 11:41:13 · 217252 阅读 · 4 评论 -
进程只运行一个实例
守护进程往往需要设置使其只运行一个实例,这里展示文件锁的方式实现:1.使用fcntl()函数设置文件锁#include #include #include #include #include #include #include int main(){ int fd; int res; struct flock lock; fd = o原创 2012-09-09 20:45:01 · 1442 阅读 · 0 评论