标签:个人 sleep size tar insert bsp rss int 查看
在服务器上用VIM编辑器编写一个程序:一个进程创建(fork)两个子进程。
cyFork.cpp源代码如下:
1 #include <stdio.h> 2 #include <unistd.h> 3 int main() 4 { 5 int pid1, pid2; //创建2个子进程 6 pid1 = fork(); 7 if (pid1 == -1) 8 { 9 printf("fork错误!!\n"); 10 return 0; 11 } 12 else if (pid1 == 0) 13 { 14 printf("子进程1的id为:%d\n", getpid()); 15 } 16 else 17 { 18 //为父进程,则创建第二个子进程 19 pid2 = fork(); 20 if (pid2 == -1) 21 { 22 printf("fork错误!!\n"); 23 return 0; 24 } 25 else if (pid2 == 0) 26 { 27 printf("子进程2的id为:%d\n", getpid()); 28 } 29 else 30 { 31 printf("父进程的id为:%d\n", getpid()); 32 } 33 sleep(300); //延迟便于挂起进程 34 } 35 }
1、编译并运行cyFork.cpp文件,同时将进程挂起至后台,以便打印进程树。
(18035即为父进程的ID)
将上述命令运行后得到如下结果:
2、利用进程树的打印命令,根据父进程的ID打印出进程树。
1、ps -ef命令 (grep用于快速筛选出我刚创建的进程)
1 chenyun@jmu-cs-ubuntu:~$ ps -ef | grep "cy"
2 字段: UID PID PPID C STIME TTY TIME CMD
3 chenyun 18035 15168 0 16:28 pts/3 00:00:00 ./cy
4 chenyun 18036 18035 0 16:28 pts/3 00:00:00 ./cy
5 chenyun 18037 18035 0 16:28 pts/3 00:00:00 ./cy
对各个字段的解释如下:
2、ps -aux命令
1 chenyun@jmu-cs-ubuntu:~$ ps -aux | grep "cy"
2 字段: USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
3 chenyun 18035 0.0 0.0 4508 748 pts/3 S 16:28 0:00 ./cy
4 chenyun 18036 0.0 0.0 4508 68 pts/3 S 16:28 0:00 ./cy
5 chenyun 18037 0.0 0.0 4508 68 pts/3 S 16:28 0:00 ./cy
对各个字段的解释如下:
1、在VIM编辑代码没有提示功能很难受,因此我试图自己用编辑器编写完cpp代码再拷贝到VIM里,但格式错乱。
可以在VIM中运行命令set paste,当下面的INSERT后跟着(paste),表明进入粘贴模式
2、我如何快速查看我所创建的进程的相关信息?
在ps命令后利用管道与grep命令,快速筛选出匹配的信息。
3、当我调用ps命令时,即使利用了快速匹配搜索,也无法找到我所创建的进程的相关信息。
我盲猜是进程被挂起的时间太短导致我在试图输出进程信息时,进程终止了。审查源代码时发现果不其然,当我把sleep函数的时间设置得更长后,我成功输出了进程的相关信息。
标签:个人 sleep size tar insert bsp rss int 查看
原文地址:https://www.cnblogs.com/un-cy233/p/12610575.html