关闭

进程只运行一个实例

守护进程往往需要设置使其只运行一个实例,这里展示文件锁的方式实现: 1.使用fcntl()函数设置文件锁 #include #include #include #include #include #include #include int main() { int fd; int res; struct flock lock; fd = o...
阅读(1080) 评论(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...
阅读(6342) 评论(0)

线程与信号

总结: signal()设置对某种信号的处理方式,只能有一种处理方式,即设置进程、线程的信号handler,对进程、线程都有效。 pthread_kill()可以向线程发送信号。 pthread_sigmask()设置线程的阻塞信号集,但是仅仅对该线程有效。 kill()向进程发送信号,由哪个线程处理该信号是未知的。可能发生的情况是,进程本身屏蔽了该信号,而某个线程没有屏蔽改信号,进而该线...
阅读(2417) 评论(1)

linux守护进程 编写要点

守护进程(Daemon)是运行在后台的一种特殊进程,脱离于终端。它在执行过程中产生的信息也不会在终端上显示。守护进程周期性地执行某种任务或等待处理某些事件的发生。Linux的大多数服务器就是用守护进程实现的。 编写要点:(最后有完整示例) 1.屏蔽一些有关终端操作的信号。这是为了防止在守护进程还没有正常运行起来前,受到终端干扰退出或者挂起。代码: signal(SIGTTOU, SIG_IG...
阅读(1987) 评论(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...
阅读(16383) 评论(0)

linux 信号 意义

信号 默认动作 信号产生的原因 SIGHUP                   终止进程                        终端线路挂断 SIGQUIT                 建立CORE文件                 终止进程,并且生成core文件 SIGILL...
阅读(1105) 评论(0)

linux进程状态

1.R: TASK_RUNNING,正在运行或者处于就绪状态 很多操作系统教科书将正在CPU上执行的进程定义为RUNNING状态、而将可执行但是尚未被调度执行的进程定义为READY状态,这两种状态在linux下统一为 TASK_RUNNING状态。 例子:ps -aux //会看到ps这个程序命令的运行状态是R,+一会再说 2.S :TASK_INTERRUPTIBLE,可中断的睡眠状态 进程因为...
阅读(1220) 评论(0)

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注册的函数。...
阅读(975) 评论(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...
阅读(5594) 评论(1)

getc,getchar,getch,getche

Windows平台下: #include int getc(FILE *_File);    //从文件中读取一个字符,文件位置指示器后移一个 int getchar(void);          //从stdin读取一个字符,回显(就是屏幕上显示输入的字符),等到输入的回车才结束,只取输入的第一个字符 #include int getch(void);...
阅读(738) 评论(0)

fork,vfork,system

1.fork()函数 #include pid_t fork(void); 创建一个子进程。 正确返回:父进程中返回子进程的进程号;子进程中返回0;(返回两次,父进程和子进程中各返回一次) 错误返回:-1;(父进程中返回) 2.vfork()函数 #include pid_t vfork(void); 创建一个子进程,阻塞父进程。vfork创建新进程的主要目的在于用exec函数执...
阅读(2878) 评论(2)

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和信号的...
阅读(1218) 评论(0)

getopt()函数用法

getopt() 函数原型:getopt() 函数,以及配合其使用的全局变量 #include int getopt(int argc, char * const argv[], const char*optstring); extern char *optarg; //选项的参数指针 extern int optind;        //下一次调用getopt的时,从opti...
阅读(580) 评论(0)

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...
阅读(4001) 评论(2)

Linux errno 错误对照表

errno 在 中定义,错误 Exx 的宏定义在 /usr/include/asm-generic 文件夹下面的  errno-base.h 和 errno.h,分别定义了 1-34 、35-132 的错误定义。 strerror() 函数依据 errno 值返回错误描述字符串,下面程序打印对照表: #include #include #include int main() {...
阅读(105217) 评论(1)
    个人资料
    • 访问:268447次
    • 积分:1482
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:2篇
    • 译文:0篇
    • 评论:49条
    文章分类
    Contact me?
    Email: gpengtao@qq.com