for的父子进程关系
来源:互联网 发布:gta5优化设置 编辑:程序博客网 时间:2024/04/25 07:13
测试环境: suse Linux
目标:查看父子进程关系
步骤:
编译、执行
测试结果:
system status information:
current process information:
pid: 30642
parent pid: 29390
user id: 73561
valid user id: 73561
group id: 16342
valid group id: 16342
end
a write to stdout
before fork
parent process information:
current process information:
pid: 30642
parent pid: 29390
user id: 73561
valid user id: 73561
group id: 16342
valid group id: 16342
end
before fork
child process information:
current process information:
pid: 30643
parent pid: 1
user id: 73561
valid user id: 73561
group id: 16342
valid group id: 16342
end
child process, i: 0 pid: 30643
child process, i: 1 pid: 30643
child process, i: 2 pid: 30643
child process, i: 3 pid: 30643
child process, i: 4 pid: 30643
child process, i: 5 pid: 30643
child process, i: 6 pid: 30643
child process, i: 7 pid: 30643
child process, i: 8 pid: 30643
child process, i: 9 pid: 30643
child process, i: 10 pid: 30643
child process, i: 11 pid: 30643
child process, i: 12 pid: 30643
child process, i: 13 pid: 30643
child process, i: 14 pid: 30643
child process, i: 15 pid: 30643
child process, i: 16 pid: 30643
child process, i: 17 pid: 30643
child process, i: 18 pid: 30643
child process, i: 19 pid: 30643
child process, i: 20 pid: 30643
child process, i: 21 pid: 30643
child process, i: 22 pid: 30643
child process, i: 23 pid: 30643
child process, i: 24 pid: 30643
child process, i: 25 pid: 30643
child process, i: 26 pid: 30643
child process, i: 27 pid: 30643
child process, i: 28 pid: 30643
child process, i: 29 pid: 30643
child process, i: 30 pid: 30643
child process, i: 31 pid: 30643
child process, i: 32 pid: 30643
child process, i: 33 pid: 30643
child process, i: 34 pid: 30643
child process, i: 35 pid: 30643
child process, i: 36 pid: 30643
child process, i: 37 pid: 30643
child process, i: 38 pid: 30643
child process, i: 39 pid: 30643
child process, i: 40 pid: 30643
child process, i: 41 pid: 30643
child process, i: 42 pid: 30643
child process, i: 43 pid: 30643
child process, i: 44 pid: 30643
child process, i: 45 pid: 30643
child process, i: 46 pid: 30643
child process, i: 47 pid: 30643
child process, i: 48 pid: 30643
child process, i: 49 pid: 30643
child process, i: 50 pid: 30643
child process, i: 51 pid: 30643
child process, i: 52 pid: 30643
child process, i: 53 pid: 30643
child process, i: 54 pid: 30643
child process, i: 55 pid: 30643
child process, i: 56 pid: 30643
child process, i: 57 pid: 30643
child process, i: 58 pid: 30643
child process, i: 59 pid: 30643
child process, i: 60 pid: 30643
child process, i: 61 pid: 30643
child process, i: 62 pid: 30643
child process, i: 63 pid: 30643
child process, i: 64 pid: 30643
child process, i: 65 pid: 30643
child process, i: 66 pid: 30643
child process, i: 67 pid: 30643
child process, i: 68 pid: 30643
child process, i: 69 pid: 30643
child process, i: 70 pid: 30643
child process, i: 71 pid: 30643
child process, i: 72 pid: 30643
child process, i: 73 pid: 30643
child process, i: 74 pid: 30643
child process, i: 75 pid: 30643
child process, i: 76 pid: 30643
child process, i: 77 pid: 30643
child process, i: 78 pid: 30643
child process, i: 79 pid: 30643
child process, i: 80 pid: 30643
child process, i: 81 pid: 30643
child process, i: 82 pid: 30643
child process, i: 83 pid: 30643
child process, i: 84 pid: 30643
child process, i: 85 pid: 30643
child process, i: 86 pid: 30643
child process, i: 87 pid: 30643
child process, i: 88 pid: 30643
child process, i: 89 pid: 30643
child process, i: 90 pid: 30643
child process, i: 91 pid: 30643
child process, i: 92 pid: 30643
child process, i: 93 pid: 30643
child process, i: 94 pid: 30643
child process, i: 95 pid: 30643
child process, i: 96 pid: 30643
child process, i: 97 pid: 30643
child process, i: 98 pid: 30643
child process, i: 99 pid: 30643
结论:
进程fork出来后,各自相互执行、抢占cpu,同时自己的程序执行完后自行退出。因此,当父进程先结束的情况下,子进程照样执行。
源代码:
- #include "apue.h"
- int glob = 6; /* external variable in initialized data */
- char buf[] = "a write to stdout/n";
- void getProcessInformation();
- int
- main(void)
- {
- int var; /* automatic variable on the stack */
- pid_t pid;
- var = 88;
- std::cout << "system status information:" << endl;
- getProcessInformation();
- if (write(STDOUT_FILENO, buf, sizeof(buf)-1) != sizeof(buf)-1)
- {
- std::cout << "write error!" << endl;
- }
- printf("before fork/n"); /* we don't flush stdout */
- if ((pid = fork()) < 0)
- {
- std::cout << "fork error" << endl;
- }
- else if (pid == 0)
- {
- std::cout << "child process information:" << endl;
- getProcessInformation();
- glob++; /* modify variables */
- var++;
- //exit(0);
- for(int i = 0; i < 100; i++)
- {
- std::cout << "child process, i: " << i << " pid: " << getpid() << endl;
- sleep(1);
- }
- exit(0);
- } else
- {
- //sleep(2); /* parent */
- std::cout << "parent process information:" << endl;
- getProcessInformation();
- exit(0);
- }
- std::cout << "end this application:" << endl;
- getProcessInformation();
- printf("pid = %d, glob = %d, var = %d/n", getpid(), glob, var);
- exit(0);
- }
- void getProcessInformation()
- {
- std::cout << "current process information:" << endl;
- std::cout << "pid: " << getpid() << endl;
- std::cout << "parent pid: " << getppid() << endl;
- std::cout << "user id: " << getuid() << endl;
- std::cout << "valid user id: " << geteuid() << endl;
- std::cout << "group id: " << getgid() << endl;
- std::cout << "valid group id: " << getegid() << endl;
- std::cout << "end/n/n" << endl;
- return;
- }
- for的父子进程关系
- 父子进程之间的关系
- fork 父子进程变量之间的关系
- 进程创建/退出父子关系的调整
- 看看进程、线程的父子关系
- fork之后父子进程的内存关系
- 父子进程关系
- malloc 之后的父子进程之间的空间关系如何
- 创建进程 fork()函数的基本使用 父子进程之间的关系
- fork 父子进程间信号关系
- 关父子进程关系fork()
- 关父子进程关系fork()
- Windows进程父子关系小实验
- 创建进程,分析父子进程关系以及结束进程。
- 继承时候的父子关系
- 13.控制器的父子关系
- 父子页面间的关系
- Elasticsearch索引的父子关系
- java中的堆栈
- jquery table展开 折叠效果
- C语言之typedef的问题
- asp.net2.0中membership用法总结
- 调用存储过程,java中通过bboss persistent实现数据库存储过程的调用(位置变量绑定)
- for的父子进程关系
- J2ME:高级列表
- Win32Asm教程
- BW十日谈之标准数据源
- Dlookup函数综合释疑
- 关于开源软件的思考
- 莫名奇妙
- 窗体、报表内部件的属性(主体、页眉、页脚)
- HIS