首页
博客
源码
资源
博客
源码
写文章
发布博客
发布资源
登录
X
进程
相关资讯
热门
最新
代码人生
01-01 08:00
代码人生
进程与信号(二)
进程与信号(二),进程调度ps输出的一个特点就是ps命令实体本身:1357pts/2R0:00ps-ax这表明进程1357处于运行状态(R)并且正在执行命令ps-ax。所以进程是在其自身的输出中被描述的。状态指示器只是表明程序已经准备好运行,并不一定是在实际运行。在单处理器的计算机上,每次只能运行一个进程,而其他的进程必须依次等待。这些轮序,就是所谓的时间片,非常短,从而给我们一种感觉,所有的程序
52
代码人生
01-01 08:00
代码人生
进程与信号(三)
进程与信号(三),等待一个进程当我们使用fork启动一个子进程时,他具有其自己的生命周期并且独立运行。有时,我们希望知道一个子进程何时结束。例如,在前一个例子中,父进程在子进程之前结束,从而我们得到混乱的输出,因为子进程还在继续运行。我们可以通过调用wait来使得父进程在继续运行之前等待,直到子进程结束。#include#includepid_twait(int*stat_loc);wait系统调
47
代码人生
01-01 08:00
代码人生
进程与信号(五)
进程与信号(五),健壮的信号接口我们已经讨论了使用signal来发出与捕获信号,因为他们在较为旧的Unix程序中很常见。然而,X/Open与Unix规范推荐了一个更为健壮的用于信号处理的新的编程接口:sigaction。#includeintsigaction(intsig,conststructsigaction*act,structsigaction*oact);sigaction结构定义在s
47
代码人生
01-01 08:00
代码人生
进程与信号(一)
进程与信号(一),第11章进程与信号进程与信号构成了Linux操作环境的基础部分。他们控制了几乎所有由Linux与其他的类Unix计算机系统所执行的活动。理解Linux与Unix如何管理进程将会使得系统程序员,程序编写者,或是系统管理处于一个有利的位置。在这一章,我们将会了解在Linux环境中进程中如何被处理的以及如何确定在指定的时刻计算机正在做什么。我们同时也会了解如何在我们自己的程序中启动与停
43
代码人生
01-01 08:00
代码人生
进程与信号(四)
进程与信号(四),线程Linux进程可以协作,可以发送消息,也可以中断另一个进程。他们甚至可以在彼此之间共享内存段,但是在操作系统内部他们却是完全不同的实体。他们并不能共享变量。在许多Unix系统与Linux系统还有另一类名为线程的进程。线程在某些程序中具有巨大的价值,例如多线程数据库服务器,然而线程很难进行编程。Linux上的线程编程并不如使用多进程那样常见,因为Linux的进程是轻量级的,而且
66
代码人生
01-01 08:00
代码人生
进程间通信(八)
进程间通信(八),搜索数据库在CD关键字上的搜索比较复杂。函数的用户希望一旦调用就启动一个搜索。我们在第7章通过将在第一次调用上的*first_call_ptr设置为true并且函数返回第一个匹配结果来满足这种需求。在接下来的搜索函数调用中,*first_call_ptr设置为false,从而会返回更多的匹配,每次调用返回一个匹配结果。现在我们已经将程序分为两个进程,我们不能再允许搜索在服务器端一
45
代码人生
01-01 08:00
代码人生
进程间通信(六)
进程间通信(六),读取与写入FIFO使用O_NONBLOCK模式会影响作用在FIFO上的read与write调用的行为。在一个空的阻塞FIFO(例如,没有使用O_NONBLOCK打开的)上的read调用将会等待直到有数据可以读取。相反,在非阻塞且没有数据的FIFO上进行read调用将会返回0字节。在一个完全阻塞的FIFO上的write调用将会等待直到数据可以写入。在一个不能全部接受所有将要写入数据
63
代码人生
01-01 08:00
代码人生
进程间通信(二)
进程间通信(二),传递更多的数据到目前为止我们所用的机制只是简单的在一个fread或是fwrite中发送或是接收全部的数据。有时我们也许以更小的尺寸发送数据,或是也许我们并不知道输出的大小。为了避免声明一个大的缓冲区,我们可以使用多个fread或是fwrite调用并分别处理这些数据。下面是一个程序,popen3.c,由一个管道中读取所有的数据。试验--由一个管道读取大量的数据在这个程序中,我们由一
46
代码人生
01-01 08:00
代码人生
进程间通信(五)
进程间通信(五),有名管道:FIFO到目前为止,我们只是可以在两个相关的程序之间传递数据,也就是说,由一个共同的祖先进程启动的程序。通常这并不是十分方便,因为我们希望不相关的进程也可以交换数据。我们可以使用FIFO来实现这个操作,通常称之为有名管道。一个有名管道是在文件系统中作为名字存在的一个特殊的文件类型(记住,在Linux一切皆文件),但是行为类似于我们已经了解的无名管道。我们可以通过命令行或
57
代码人生
01-01 08:00
代码人生
进程间通信(七)
进程间通信(七),CD数据库程序现在我们已经了解了我们可以如何使用有名管道来实现一个简单的客户端/服务器系统,我们可以重新查看我们的CD数据库程序并且进行相应的修改。我们同时组合了一些信号处理从而允许我们在进程被中断时进行一些清理动作。我们会使用我们前面的具有一个命令行接口的dbm版本,从而进可能直接的查看代码。在我们更为详细的讨论新版本的代码之前,让我们先编译这个程序。如果我们有由Web站点所获
56
«
1
2
3
4
5
6
7
8
»