linux系统编程----------进程

本文介绍了Linux系统中管理进程的相关命令和函数,如`ps`、`top`、`free`、`kill`以及`fork()`和`exec()`。`ps`用于查看进程状态,`top`提供实时系统信息并支持排序,`free`显示内存使用情况,`kill`发送信号结束进程。`fork()`创建子进程,`exec()`替换进程中的代码。同时提到了`ulimit`命令用于查看和限制进程数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于进程的一些命令

ps
可以查看哪些进程正在执行
ps -C 命令行 //通过命名来产看该命令执行后的进程信息

top
top命令实时显示系统的进程状态,包括显示CPU利用率,进程状态,内存利用率等许多系统信息,top命令一旦运行就会持续不断地更新内容。
按P键,根据CPU使用时间的多少排序。
按M键,根据内存的使用情况排序。
按T键,根据进程的执行时间的多少排序。

free
显示系统内存的使用情况,包括内存总量,已经使用内存数量,空闲内存数量等信息。

kill
kill pid //向指定的进程发送终止运行信号,进程将自行结束并处理好相关事务,属于安全结束。(默认信号为SIGTERM)
kill -9 pid //参数-9为SIGKILL信号,是强制结束。

相关函数

fork() //创建进程,创建失败返回-1,成功父进程中返回子进程pid,子进程中返回0;
特点:调用一次返回两次,相同但是独立的地址空间,并发执行,共享文件

函数接口
pid_t getpid()获取当前进程的pid
pid_t getppid()获取当前进程父进程pid
执行函数 exec()

一般使用时有fork创建子进程后,在子进程中执行,替换子进程中的代码,子进程的PID不变。
ulimit -a 可以查看linux系统可以创建多少个进程。
ulimit -u 进程数 //可以修改创建进程数

分类函数
字符串数组参数int execv(const char *path, char *const argv[])
int execvp(const char *file, char *const argv[])
int execvpe(const char *file, char *const argv[], char *const envp[]);
可变参数int execl(const char *path, const char *arg, …)
int execlp(const char *file, const char *arg, …)
int execle(const char *path, const char *arg, …, char * const envp[]);
  • 返回值 成功不返回,失败返回-1
  • 头文件 unistd.h
  • exec函数命名规律
字符含义
v第二个参数是数组
l第二个参数之后是变参
p第一个参数是文件名
e最后一个参数是环境变量
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

extern char ** environ;

int main(int argc, char*argv[]){
	printf("%s,pid %d\n",argv[0],getpid());
	execlp("ps","ps","-a","-o","pid,ppid,cmd,",0);
	//execl("/bin/ps","ps","-a","-o","pid,ppid,cmd,",0);
	//execle("/bin/ps","ps","-a","-o","pid,ppid,cmd,",0,environ);
	char * args[] = {"ps","-a","-o","pid,ppid,cmd",0};
	//excv("/bin/ps",args);
	//execve("/bin/ps",args,environ);
	//execvp("ps",args);
	printf("%s,pid %d\n",argv[0],getpid());	
}

执行结果,被替换之后的是没有输出的。
在这里插入图片描述

进程结束

exit 结束程序,其参数是返回os,表示了一个进程的结束,删除进程的内存空间。
return 是语言级别的,它表示了调用堆栈的返回,return饭后函数值并退出函数。
abort函数解释http://www.cplusplus.com/reference/cstdlib/abort/?kw=abort)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值