linuxwaitpid函数?
waitpid函数
作用同wait,但可指定pid进程清理,可以不阻塞。
pid_twaitpid(pid_tpid,int*status,inoptions);成功:返回清理掉的子进程ID;失败:-1(无子进程)
特殊参数和返回情况:
参数pid:
>0回收指定ID的子进程
-1回收任意子进程(相当于wait)
0回收和当前调用waitpid一个组的所有子进程
-1回收指定进程组内的任意子进程
返回0:参3为WNOHANG,且子进程正在运行。
注意:一次wait或waitpid调用只能清理一个子进程,清理多个子进程应使用循环。
linux下查看进程用什么命令?
linux下查看进程可以使用的命令:
1、ps命令查找与进程相关的PID号:
2、psa显示现行终端机下的所有程序,包括其他用户的程序。
3、ps-A显示所有程序。
4、psc列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
5、ps-e此参数的效果和指定"A"参数相同。
6、pse列出程序时,显示每个程序所使用的环境变量。
7、psf用ASCII字符显示树状结构,表达程序间的相互关系。
8、ps-H显示树状结构,表示程序间的相互关系。
9、ps-N显示所有的程序,除了执行ps指令终端机下的程序之外。
10、pss采用程序信号的格式显示程序状况。
11、psS列出程序时,包括已中断的子程序资料。
12、ps-t终端机编号>指定终端机编号,并列出属于该终端机的程序的状况。
13、psu以用户为主的格式来显示程序状况。
14、psx显示所有程序,不以终端机来区分。
linux获取进程id函数?
linuxC中,获取当前进程id函数为getpid();
头文件:#includeunistd.h> 函数原型:pid_tgetpid(void); 函数说明:getpid()用来取得目前进程的进程id,许多程序利用取到的此值来建立临时文件,以避免临时文件相同带来的问题。 返回值:目前进程的进程id 范例 #includestdio.h> #includeunistd.h> main() { printf("pid=%d",getpid()); } 执行: pid=1494/*每次执行结果都不一定相同*/
linux怎么查看一个进程的执行状态?
1,写一个服务,用exec或popen执行ps的命令行,根据该进程的名字获取该进程的pid。
sprintf(cmd,"ps-ef|grep%s",name);
pstr=popen(cmd,"r");
然后php定时的请求这个机器上的进程状态,如果进程挂掉了,可以做个预警。
2,如果想做的更多,监视当前每个进程的资源消耗,比如CPU,内存,根据进程的id,可以去拿到/proc/pid/status中的一些数据,比如:
//获取进程占用内存
unsignedintget_proc_mem(unsignedintpid){
charfile_name={0};
FILE*fd;
charline_buff={0};
sprintf(file_name,"/proc/%d/status",pid);
fd=fopen(file_name,"r");
if(nullptr==fd){
return0;
}
charname;
intvmrss;
for(inti=0;iVMRSS_LINE-1;i++){
fgets(line_buff,sizeof(line_buff),fd);
}
fgets(line_buff,sizeof(line_buff),fd);
sscanf(line_buff,"%s%d",name,vmrss);
fclose(fd);
returnvmrss;
}
然后你就可以通过一些图形做一些动态展示了。
linux查看进程由哪个进程启动?
1、查看进程“打开”的文件(方法1):
1)pidofprograme-name(获得想了解的进程(programe-name)的PID)或ps-aux|grepprograme-name(获得想了解的进程(programe-name)的PID)找出进程的PID2)cd/proc/$PID/fd(会看见文件描述符)
3)ls-l得到文件描述符指向的实际文件,即当前进程打开的文件2、查看进程“打开”的文件(方法2):
1)获得想了解的进程的PID方法同上2)lsof-cprograme-name或lsof-p$PID