我前段时间看unix 编程,里面提到shell的编写, 作者说unix 命令在shell里面执行,是由shell进程fork一个进程去执行命令的, 而且当时我自己还写了个简单的shell,的确是这样, 问题是,为什么所有的子进程都属于INIT呢? 我刚在shell里执行一个脚本,发现它的父进程是init, 按照开始说的理论,应该是shell的进程才对啊。 谁知点一下?
unix进程专辑,介绍unix进程的各个方面,主要内容来源于W. Richard Stevens和Stephen A. Rago的经典作:APUE(Advanced Programming in the unix® Environment: Second Edition)。包括如下几个部分: 本文来自Chinaunix博客,如果查看原文请点:http://blog.chinaunix.net/u1/53238/showart_1915831.html
就是unix高级环境编程的第一章的一个例子。 main() { while(fgets(buf,1024,stdin)!=NULL) { if(pid = fork()<0) printf("error..."); printf("pid=[%d]",pid); if(pid == 0) printf("ok..."); } exit(0); } 有一点不太明白,就是第二个printf()为什么会运行两遍???而且都是pid=0!!!谢谢各位大侠...
不知为何会这样?? PID USERNAME PRI NICE SIZE RES STATE TIME COMMAND 8387 root 23 4 548K 548K onpr 0:00 top 7966 root 51 0 1272K 1272K sleep 0:01 ttyd
[code]进程管理 在系统shell提示下,使用者可以输入各种命令来执行相应的工作。每个命令通常从终端键盘中获取输入,将输 出打印到终端屏幕上,unix使用标准输入stdio和标准输出stdout,来表示每个命令的输入和输出,还使用一 个标准错误输出stderr用于输出错误信息。这三个标准输入输出系统缺省与终端设备相联系在一起,但是也可以使用管 道的概念将它们重新定向,从一个文件或另一个命令中获取输入,输出到另外的文件中或作为...