author: 泥烟
文章目录
ps命令查看系统进程
ps 的参数很多, 在此仅列出几个常用的参数
-
-A 列出所有的进程
-
-w 显示加宽可以显示较多的资讯
-
-ef 显示所有命令,连带命令行
-
-au 显示较详细的资讯
-
-aux 显示所有包含其他使用者的行程
-
au(x) 输出格式 :USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
-
USER: 行程拥有者
-
%CPU: 占用的 CPU 使用率
-
%MEM: 占用的记忆体使用率
-
VSZ: 占用的虚拟记忆体大小
-
RSS: 占用的记忆体大小
-
TTY: 终端的次要装置号码 (minor device number of tty)
-
STAT: 该行程的状态
-
-
kill -9 pid 杀死pid号的进程
-
env 查看环境变量
fork1.c
#include<stdio.h>
#include<unistd.h>
main()
{
int pid=fork();
if(pid == -1){
printf("fork failed.\n");
return ;
}
else if(pid > 0) printf("%d %d\n", pid, getpid());
else printf("%d %d\n", pid, getpid());
printf("child\n");
printf("father\n");
return;
}
总结
fork2.c
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
main(int argc, char **argv)
{
int pid = fork();
if(pid == 0){
printf("Child\n");
execl("/bin/ls", "ls", 0);
perror("exce error!\n");
printf("ccc");
}
else if(pid > 0) printf("Parent\n");
else printf("FORK FAIL!\n");
printf("%d END.\n", getpid());
}
总结
fork2plus.c (可传参)
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
main(int argc, char **argv)
{
int pid = fork();
int rtn;
if(pid == 0){
printf("Child\n");
printf("argc=%d\n", argc);
for(int i = 1; i < argc; i ++){
printf("执行%s...\n", argv[i]);
system(argv[i]);
perror(argv[i]);
}
exit(errno);
}
else if(pid > 0){
wait(&rtn);
printf("Chird is over, here is parent(%d)\n", getpid());
}
else printf("FORK FAIL!\n");
printf("%d END.\n", getpid());
}
总结
1.分析
2.argc argv
proc1.c
//进程操作
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <errno.h>
int main(int argc,char **argv)
{
pid_t pid,old_ppid,new_ppid;
pid_t child,parent;
parent = getpid(); //获得本进程PID
if((child=fork()) < 0){
fprintf(stderr, "%s:fork of child failed:%s\n", argv[0], strerror(errno));
exit(1);
}
else if(child == 0){ //子进程被调度运行
old_ppid = getppid();
sleep(2);
new_ppid = getppid();
}
else {
sleep(2);
printf("父亲(pid=%d)醒了并say good bye!\n", getpid());
exit(0); //父进程退出
}
//下面仅子进程运行
printf("Original parent:%d\n", parent);
printf("Child:%d\n", getpid());
printf("Child's old ppid:%d\n", old_ppid);
printf("Child's new ppid:%d\n", new_ppid);
exit(0);
}