系统编程
天健园扛把子
兴趣遍地都是,专注和持之以恒才是真正稀缺的。
展开
-
线程同步中的虚假唤醒
在多核处理器下pthread_cond_signal可能唤醒多于一个线程(阻塞在条件变量上的线程)。 结果是,当一个线程调用pthread_cond_signal()后,多个调用pthread_cond_wait()或pthread_cond_timedwait()线程返回。这就叫虚假唤醒 解决办法:将判断条件改成while void* printA(void *arg) { while(1) ...原创 2019-04-24 20:37:59 · 228 阅读 · 0 评论 -
Linux系统编程——守护进程
守护进程 Daemon(精灵)进程,是Linux中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。一般采用以d结尾的名字。 Linux后台的一些系统服务进程,没有控制终端,不能直接和用户交互。不受用户登录、注销的影响,一直在运行着,他们都是守护进程。如:预读入缓输出机制的实现;ftp服务器;nfs服务器等。 创建守护进程,最关键的一步是调用setsid函数创建...原创 2019-04-24 20:39:40 · 278 阅读 · 0 评论 -
僵尸进程的危害及避免
为什么会存在僵尸进程 由于子进程的结束和父进程的运行是一个异步的过程,所以父进程不知道子进程什么时候结束,这可能导致当子进程结束时父进程太忙而丢失子进程结束时的状态信息。于是,UNIX提供了一种机制保证了只要父进程想要看到子进程结束的信息,就能看到。这种机制就是:在每个进程退出时,内核释放所有资源,但扔然保留一定的信息,如进程号,退出信息,运行时间等等,这些信息要知道父进程来取,并且由父进程释放,...原创 2019-05-21 10:19:27 · 1088 阅读 · 0 评论 -
Linux系统编程——信号
基本概念 信号的状态 产生 未决状态 — 没有被处理的 递达 — 已经被处理的 信号的优先级比较高 进程收到信号之后,暂停正在处理的工作 信号集 不能直接操作 阻塞信号集 要屏蔽的信号 ---- > 处于未决状态 未决信号集 没有被处理的信号的集合 信号相关的函数 kill----发射信号给某个进程 函数原型:int kill(pid_t pid,int sig); ...原创 2019-05-18 10:04:12 · 306 阅读 · 0 评论