Linux进程管理与程序开发
2010-11-18 17:01
281 查看
1、创建进程
code:
结果:
in the parent
in the child
2、父子进程 对打开文件的处理
notes:子进程将复制父进程的数据段、BSS、代码段、堆空间、栈空间和文件描述符
对于文件描述符关联的内核文件表项,则采用共享的方式(父子进程共享文件)
codes:
结果:
Helloworld this is Jason
3、在进程中运行新的代码
该进程代码段、数据段 等等完全由新程序代替
code:
结果:
father ok
root@ubuntu:/code/chap6# total 104
drwxr-xr-x 2 root root 4096 2010-11-15 16:05 chap3
drwxr-xr-x 2 root root 4096 2010-11-16 21:14 chap4
drwxr-xr-x 2 root root 4096 2010-11-17 20:50 chap5
drwxr-xr-x 2 root root 4096 2010-11-22 17:31 chap6
drwxr-xr-x 2 root root 4096 2010-11-22 15:57 chap8
-rw-r--r-- 1 root root 70 2010-11-07 16:34 fac.c
-rw-r--r-- 1 root root 1352 2010-11-07 16:41 fac.o
-rw-r--r-- 1 root root 11 2010-11-07 15:38 hello2.c
-rw-r--r-- 1 root root 75 2010-11-07 15:45 hello.c
-rw-r--r-- 1 root root 243 2010-11-16 19:49 main.c
-rw-r--r-- 1 root root 243 2010-11-07 16:40 main.c~
-rw-r--r-- 1 root root 39255 2010-11-07 17:07 main.i
-rw-r--r-- 1 root root 1768 2010-11-07 16:40 main.o
-rwxr-xr-x 1 root root 8494 2010-11-07 16:42 run
drwxr-xr-x 2 root root 4096 2010-11-07 17:41 testSpot
code:
#include<stdio.h> #include<unistd.h> #include<sys/types.h> int main() { pid_t pid; if((pid=fork())==-1) puts("fork error"); else if(pid==0) puts("in the child"); else puts("in the parent"); return 0; }
结果:
in the parent
in the child
2、父子进程 对打开文件的处理
notes:子进程将复制父进程的数据段、BSS、代码段、堆空间、栈空间和文件描述符
对于文件描述符关联的内核文件表项,则采用共享的方式(父子进程共享文件)
codes:
#include<sys/types.h> #include<stdio.h> #include<unistd.h> #include<fcntl.h> #include<string.h> #include<stdlib.h> int main() { pid_t pid; int fd,i=1,status; char * ch1="Hello"; char * ch2="world"; char * ch3=" this is Jason"; if((fd=open("doc3",O_RDWR|O_CREAT,0644))==-1){ perror("parent_open_fail"); exit(EXIT_FAILURE); } if(write(fd,ch1,strlen(ch1))==-1){ perror("parent_write fail"); exit(EXIT_FAILURE); } if((pid=fork())==-1){ perror("fork"); exit(EXIT_FAILURE); } else if(pid==0) //child process { i=2; puts("in child"); printf("i is %d/n",i); if((write(fd,ch2,strlen(ch2)))==-1) perror("child write fail"); return 0; } else{ //parent process sleep(1); puts("in parent"); printf("i is %d/n",i); if((write(fd,ch3,strlen(ch3)))==-1) perror("parent write fail"); wait(&status); return 0; } }
结果:
Helloworld this is Jason
3、在进程中运行新的代码
该进程代码段、数据段 等等完全由新程序代替
code:
#include<stdio.h> #include<unistd.h> #include<sys/types.h> int main() { pid_t pid; pid=fork(); if(pid<0) puts("error"); else if(pid==0) { execl("/bin/ls","ls","-l","/code",(char*)0); puts("the latter code in child"); } else puts("father ok"); return 0; }
结果:
father ok
root@ubuntu:/code/chap6# total 104
drwxr-xr-x 2 root root 4096 2010-11-15 16:05 chap3
drwxr-xr-x 2 root root 4096 2010-11-16 21:14 chap4
drwxr-xr-x 2 root root 4096 2010-11-17 20:50 chap5
drwxr-xr-x 2 root root 4096 2010-11-22 17:31 chap6
drwxr-xr-x 2 root root 4096 2010-11-22 15:57 chap8
-rw-r--r-- 1 root root 70 2010-11-07 16:34 fac.c
-rw-r--r-- 1 root root 1352 2010-11-07 16:41 fac.o
-rw-r--r-- 1 root root 11 2010-11-07 15:38 hello2.c
-rw-r--r-- 1 root root 75 2010-11-07 15:45 hello.c
-rw-r--r-- 1 root root 243 2010-11-16 19:49 main.c
-rw-r--r-- 1 root root 243 2010-11-07 16:40 main.c~
-rw-r--r-- 1 root root 39255 2010-11-07 17:07 main.i
-rw-r--r-- 1 root root 1768 2010-11-07 16:40 main.o
-rwxr-xr-x 1 root root 8494 2010-11-07 16:42 run
drwxr-xr-x 2 root root 4096 2010-11-07 17:41 testSpot
相关文章推荐
- 【linux高级程序设计】(第八章)进程管理与程序开发 5
- Linux进程管理与程序开发
- Linux 程序设计学习笔记----进程管理与程序开发(上)
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 信号集与屏蔽信号 分类: Linux --- 应用程序设计 2014-11-08 13:19 53人阅读 评论(0) 收藏
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 管道 分类: Linux --- 应用程序设计 2014-11-05 11:18 75人阅读 评论(0) 收藏
- 【linux高级程序设计】(第八章)进程管理与程序开发 1
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - Linux常见信号及处理 分类: Linux --- 应用程序设计 2014-11-08 11:54 68人阅读 评论(0) 收藏
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 等待信号 分类: Linux --- 应用程序设计 2014-11-09 11:25 50人阅读 评论(0) 收藏
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - Linux常见信号及处理
- Linux 程序设计学习笔记----进程管理与程序开发(下)
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - System V进程间通信基础 分类: Linux --- 应用程序设计 2014-11-11 13:08 51人阅读 评论(0) 收藏
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 信号量通信机制 分类: Linux --- 应用程序设计 2014-11-13 11:08 70人阅读 评论(0) 收藏
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 安装信号与捕捉信号 分类: Linux --- 应用程序设计 2014-11-08 13:00 49人阅读 评论(0) 收藏
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 信号应用实例 分类: Linux --- 应用程序设计 2014-11-09 11:33 66人阅读 评论(0) 收藏
- 【linux高级程序设计】(第八章)进程管理与程序开发 2
- 【linux高级程序设计】(第八章)进程管理与程序开发 3
- 【linux高级程序设计】(第八章)进程管理与程序开发 4
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - System V进程间通信之消息队列 分类: Linux --- 应用程序设计 2014-11-11 13:16 71人阅读 评论(0) 收藏
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 孤儿进程和僵死进程
- linux程序管理和进程(1)