Monthly: March 2011
进程间关系:进程、僵尸进程、孤儿进程、进程组、前台进程组、后台进程组、孤儿进程组、会话、控制终端
不同的shell对使用管道线时创建子进程的顺序不同,本文以bash为例,它是支持作业控制的shell的典型代表。
僵尸进程与孤儿进程
僵尸进程:先于父进程终止,但是父进程没有对其进行善后处理(获取终止子进程有关信息,释放它仍占有的资源)。消灭僵尸进程的唯一方法是终止其父进程。
孤儿进程:该进程的父进程先于自身终止。其特点是PPID=1(init进程的ID... [阅读全文]
可靠signal函数的实现
lesca | Ubuntu | 2011-03-16
在上一篇文章中,笔者介绍了Ubuntu中signal()函数的不可靠性以及产生不可靠性的缺陷。
我们先来回忆一下这四种缺陷:
每次接到信号后,该信号复位成默认动作
不改变信号的处理方式就无法确定当前的信号处理方式
无法避免地导致系统调用的中断
进程不能关闭某些不想捕获的信号
那么如何才能消除这种不可靠性呢?这正是本文要讨论的话题。
lesca原创,... [阅读全文]
危险:中断不可重入的函数
如果中断一个不可重入的函数,将会引发不可预料的问题。本文举例阐述一个不可重入的函数,将其在不恰当的时候中断,以说明其危害。
lesca原创,转载请注明出处:http://lesca.me/
什么是不可重入的函数?
我们来看一个例子:
[cpp]
#include "apue.h"
static char buf[MAXLINE];
static void
my_alarm(int signo)
{
signal(SIGALRM, my_ala... [阅读全文]
Ubuntu中signal()函数可靠性研究
signal()函数由ISO C定义,而ISO C不涉及多进程、进程组以及终端I/O等,所以它对信号的定义非常模糊。因此在很多类UNXI系统中其实现是否具有不可靠性是值得探讨的问题。本文将以Ubuntu系统为例(当前内核版本Linux version 2.6.32-29-generic),针对各种不可靠性以及缺陷,设计程序,以验证是否存在该种不可靠性或缺陷。
原创文章,转载请注明来自htt... [阅读全文]
红外线遥控器编码解码(1):引导码(leader code)
lesca | ARM | 2011-03-11
引导码可以说是各个不同遥控器的身份证。但是更确切的说,应该是遥控器内编码芯片的身份证。
不同的编码芯片其引导码的高低电平持续时长不尽相同。本文将通过实验证明此观点。
实验设备:
51单片机开发板,遥控器数个,TL1838红外接收器一个,RSR232串行线一根,USB转串口线一根
实验原理
TL1838是一个一体化的红外接收器,能将空间中传播的38kHz编码... [阅读全文]
[Ubuntu]在ubuntu上编译、烧写AT80S52 (Working on Ubunutu: compiling, burining for AT80S52)
This article is dual-language(Chinese-simplified and English), and is aimed to help everyone who has the same problem.
本文是双语文章,旨在帮助每个遇到该问题的人。
本文中,我将使用sdcc为8051的源文件进行交叉编译,并且使用avrdude通过usbasp下载线将其下载到目标版。
In this article, I will use sdcc to cross-compile source file of ... [阅读全文]
Websh v0.2 发布
Websh是基于PHP的网页shell,它能够为没有打开安全模式并且不提供SSH支持的服务器提供shell交互界面
相比0.1版本,该版本具有以下特性:
功能以及更新:
启用AJAX支持
极大提高了页面更新速度,不必每次发送完指令后等待整个页面刷新。
同时支持多个命令的异步执行。
运行结果自动滚动
每次执行完命令后,文本域能够自动滚动到底部,当有多个命令异步... [阅读全文]
[Lesca译文]initrd 概览:什么是initrd, initrd原理, 创建initrd, 手动创建initrd
原作者:M. Tim Jones (mtj@mtjones.com), Emulex公司工程、顾问
原文链接: IBM DeveloperWorks – Linux initial RAM disk (initrd) overview
摘要: Linux® initial RAM disk (initrd) 是一个临时的根文件系统(root file system),它在系统引导期间被挂载,以提供“双阶段引导”过程的支持。initrd 包含各种可执行文件和驱动以允许真正的根文件... [阅读全文]
[Socket][网络编程]程序范例:Linux下连接WEB服务器
昨天试着在Ubuntu 下用C语言写了一个客户端,用来向WEB服务器上交请求并取回响应报文。
同时,这也是一个通用的基于IPv4的客户端程序例程。
[cpp]
/* socket test on linux main file.
*
* Author: Lesca<http://lesca.me>
* License: GPL
*
*/
#include <sys/types.h>
#include <sys/socket.h>
#include <s... [阅读全文]
SSH端口转发(本地端口转发、远程端口转发、动态端口转发)工作原理、应用详解
实验条件:
1.本文所述之实验,本地主机操作系统基于Ubuntu 10.04,远程主机操作系统基于BSD发行版
2.本地主机安装了ssh client(ssh),也安装了ssh server(sshd)
基础知识:
文章中客户端指ssh,用于发出连接请求;服务端指sshd,监听端口22。
安全通道是指ssh与sshd之间已建立的连接通道,该连接是加密的。
SSH 端口转发格式[1]
[-L [bind_address:]... [阅读全文]
近期评论 Recent Comments