地址:http://www.zhihu.com/question/19901763原文:这么解释问题吧:1。单进程单线程:一个人在一个桌子上吃菜。2。单进程多线程:多个人在同一个桌子上一起吃菜。3。多进程单线程:多个人每个人在自己的桌子上吃菜。多线程的问题是多个人同时吃一道菜的时候容易发生争抢,例如...
分类:
编程语言 时间:
2014-10-13 22:26:57
阅读次数:
167
首先来看一段从《UNIX环境高级编程》中摘录的一段非常有意思的代码。借此我们再来谈谈fork()函数的一些问题。
#include "apue.h"
static void charatatime(char*);
int
main(void)
{
pid_t pid;
if((pid=fork())<0){
err_sys("fork error");
}else ...
分类:
其他好文 时间:
2014-10-12 23:16:58
阅读次数:
278
0.背景 在看APUE第七章的时候,作者分析了setjmp和longjmp这种函数间跳转机制对不同存储类型变量的影响,看到register,auto,volatile,static等等这些关键字很模糊,也可能太少用了,但是自认为C语言基础不错的我还是不能接受任何不懂的知识点,于是就捋了捋思路。1.....
分类:
编程语言 时间:
2014-10-09 02:50:17
阅读次数:
165
前言: 前天在看APUE的时候突然想到了这个问题,于是给自己科普一下Linux系统的启动流程。1.加载BIOS 接通电源后,计算机首先加载BIOS(即Basic Input-Output System,该程序被固化在主板上的一个ROM芯片中,包括最基本的输入输出程序、系统设置程序、开机硬件自检程.....
分类:
系统相关 时间:
2014-10-09 02:11:07
阅读次数:
203
错误处理 代码(C)本文地址:http://blog.csdn.net/caroline_wendy错误处理的函数包含在中,主要使用两个函数,strerror()返回出错信息字符串,perror()直接输出错误信息。代码:/*By C.L.Wang
* Eclipse CDT
* Ubuntu 12.04
* 2014.10.5*/
#include "apue.h"
#include "...
分类:
系统相关 时间:
2014-10-07 21:25:54
阅读次数:
187
进程控制 代码(C)本文地址:http://blog.csdn.net/caroline_wendy输出进程ID,getpid().代码:/*By C.L.Wang
* Eclipse CDT
* Ubuntu 12.04
* 2014.10.5*/
#include "apue.h"
#include "error.h"
int main(void) {
printf("hello ...
分类:
系统相关 时间:
2014-10-07 00:51:22
阅读次数:
342
标准输入转换为标准输出 代码(C)本文地址:http://blog.csdn.net/caroline_wendyLinux可以使用getc()和putc(),读取和写入每一个输入字符。代码:/*By C.L.Wang
* Eclipse CDT
* Ubuntu 12.04
* 2014.10.5*/
#include "apue.h"
#include "error.h"
int m...
分类:
系统相关 时间:
2014-10-06 11:14:10
阅读次数:
236
APUE 线程 - 程序清单
程序清单11-1 打印线程ID
程序清单11-2 获得线程退出状态
程序清单11-3 pthread_exit 的参数不正确使用
程序清单11-4 线程清理处理程序
程序清单11-5 使用互斥量保护数据结构
程序清单11-6 使用两个互斥量
程序清单11-7 简化的加,解锁
程...
分类:
编程语言 时间:
2014-10-05 01:31:37
阅读次数:
191
实例11-1为在Ubuntu12.04上的运行结果与书中描述的不一致呢?从pid来看这两个线程属于同一个进程,且线程ID也是指针形式的,Google后得知,书上讲的是以前的LinuxThreads实现,现在linux使用NPTL线程。参考:Linux线程模型的比较:LinuxThreads和NPTL习题11.4在回答该问题之前..
分类:
编程语言 时间:
2014-10-04 04:40:16
阅读次数:
381
1.子进程是父进程的副本,获得父进程的数据空间/堆/栈,父子进程共享代码段.子进程从fork后开始执行,返回值=0表示子进程,因为子进程可以通过函数来获取父进程的ID,但是父进程无法知道子进程的ID.
2.为了提交效率,fork后,并不立刻复制父进程的空间,而是采取写时复制(COW)的技术,也就是父进程或者子进程要修改数据段/堆/栈的时候,才进行复制操作,并且复制修改的区域.
3.子进程从父进...
分类:
其他好文 时间:
2014-10-03 20:13:55
阅读次数:
151