Advanced Programming in UNIX Environment Episode 3
来源:互联网 发布:envi裁剪landsat8数据 编辑:程序博客网 时间:2024/05/18 09:08
- 程序
程序是一个存储在磁盘上某个目录中的可执行文件。内核使用exec函数(7个exec函数之一),将程序读入内存,并执行内存。 进程和进程ID
程序的执行实例被称为进程。
UNIX系统确保每个进程都有一个唯一的数字标识符,成为进程ID。进程ID总是一个非负整数。#include <apue.h>#define BUFFSIZE 4096int main(void){ printf("hello world from process ID %ld\n",(long)getpid()); exit(0);}
进程控制
有3个用于进程控制的主要函数:fork、exec和waitpid。#include "apue.h"#include <sys/wait.h>int main(void){ char buf[MAXLINE]; pid_t pid; int status; printf("%% "); while(fgets(buf,MAXLINE,stdin)!=NULL) { if(buf[strlen(buf)-1]=='\n') buf[strlen(buf)-1]=0; if((pid==fork())<0) { err_sys("fork error"); } else if(pid==0) { execlp(buf,buf,(char*)0); err_ret("couldn't execute: %s",buf); exit(127); } if((pid==waitpid(pid,&status,0))<0) err_sys("waitpid error"); print("%% "); } exit(0);}
线程和线程ID
通常,一个进程只有一个控制线程(thread)——某一时刻执行的一组机器指令。对于某些问题,如果有多个控制线程分别作用于它的不同部分,那么解决起来就容易多。另外,多个控制线程也可以充分利用多处理器系统的并行能力。
一个进程内的所有线程共享同一地址空间、文件描述符、栈以及与进程相关的属性。因为他们能访问同一存储区,所以各线程在访问共享数据时需要采取同步措施以避免不一致性。
与进程相同,线程也用ID标识。但是,线程ID只在它所属的进程内起作用。一个进程中的线程ID在另一个进程中没有意义。当在一进程中对某个特定线程进行处理时,可以使用该线程的ID引用它。
阅读全文
0 0
- Advanced Programming in UNIX Environment Episode 3
- Advanced Programming in Unix Environment Episode 1
- Advanced Programming in Unix Environment Episode 2
- Advanced Programming in UNIX Environment Episode 4
- Advanced Programming in UNIX Environment Episode 5
- Advanced Programming in UNIX Environment Episode 6
- Advanced Programming in UNIX Environment Episode 7
- Advanced Programming in UNIX Environment Episode 8
- Advanced Programming in UNIX Environment Episode 9
- Advanced Programming in UNIX Environment Episode 10
- Advanced Programming in UNIX Environment Episode 11
- Advanced Programming in UNIX Environment Episode 12
- Advanced Programming in UNIX Environment Episode 13
- Advanced Programming in UNIX Environment Episode 14
- Advanced Programming in UNIX Environment Episode 15
- Advanced Programming in UNIX Environment Episode 16
- Advanced Programming in UNIX Environment Episode 17
- Advanced Programming in UNIX Environment Episode 18
- java作业2
- CCF认证201412-1 门禁系统
- 1039 vector+hash
- LeetCode题目:2. Add Two Numbers
- HDU 6201 transaction transaction transaction [网络流]
- Advanced Programming in UNIX Environment Episode 3
- nginx简单搭建负载均衡服务器(windows)
- 染色问题
- maven 光速入门攻略06
- Java作业3
- 如何做一名程序员
- 03-mysql中修改密码
- 498.Diagonal Traverse-M
- jzoj P2203 遗忘口令 (Standard IO)