1进程与线程以及Linux中fork()的运用

来源:互联网 发布:开源cms建站系统 编辑:程序博客网 时间:2024/05/29 19:44

读《用TCP/IP进行网际互连——客户-服务器编程与应用(Linux/POSIX套接字版)》

第1章 引言和概述

TELNET的在LINUX和WIN7中的使用以及在WIN7中的启用方法

http://blog.csdn.net/qq_27607539/article/details/73715679

第2章 客户-服务器模型与软件设计

这章还为参透,之后看看能不能有所感悟吧。

第3章 客户-服务器软件中的并发处理

并发执行。

进程与线程的变量共享问题。

当多个线程并发地执行同一段代码时,对这段代码所涉及的变量,每个线程都应各有一份独立的副本。

每个进程拥有全局变量的副本;如果多个线程在同一个进程内执行,则它们各自拥有局部变量的副本,但都可共享进程的全局变量副本。

当多个线程并发地执行一段代码时,每个线程拥有自己的栈。


LINUX下的多进程编程。

fork()函数用来将运行着的程序分成2个几乎完全一样的进程,每个进程都启动一个从代码的同一位置开始执行的线程。

fork调用新创建的进程都是单线程的。

返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程标记;否则,出错返回-1。

包含头文件

#include<unistd.h>
#include<sys/types.h>

编程示例

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main(void){
int pid;
pid=fork();
if(pid==-1) return -1;
if(pid==0){
//子进程
printf("这里是子进程!\n");
}else{
//父进程
printf("这里是父进程!\n");
printf("子进程的PID=%d\n",pid);
return 0;
}
}

LINUX下的C编译方法参考

http://blog.csdn.net/qq_27607539/article/details/73721946

上述代码编译运行结果如下:

进程之间是并发执行的,子进程的输出不一定在前。

原创粉丝点击