linux进程pidlinux进程pid-
linux中哪个内置变量表示进程的pid值?
Linux中echo$$内置变量表示进程的PID值。
linux中pid和端口号区别?
pid是给进程用的,端口号是给网络端口用的,端口不一定被进程使用,进程也可以使用多个端口。本质上来讲两个ID描述的是不同的东西。
Linux下进程的创建与进程间通信?
代码示例:
#includestdio.h>
#includeunistd.h>
#includefcntl.h>
#defineREAD_TERMINAL0
#defineWRITE_TERMINAL1
intmain(){
intfile_descriptors;
pid_tpid_f;
charPipeBuf={‘a’,‘0’};
intread_ret=0;
pipe(file_descriptors);
pid_f=fork();
if(pid_f0)
{
printf(“forkerror!n”);
exit(1);
}
elseif(pid_f==0)
{
//子进程向父进程发一则消息
printf(“WriteinPipeToFatherProcess!n”);
close(file_descriptors);
sleep(1);
write(file_descriptors,“ChildSend”,sizeof(“ChildSend”));
//open(file_descriptors);
}
else
{
//父进程接收(读取)消息
printf(“ReadinPipeFromChildProcess!n”);
//通过fcntl()修改为使得读管道数据具有非阻塞的特性
intflag=fcntl(file_descriptors,F_GETFL,0);
flag|=O_NONBLOCK;
if(fcntl(file_descriptors,F_SETFL,flag)0){
perror(“fcntl”);
exit(1);
}
close(file_descriptors);
read_ret=read(file_descriptors,PipeBuf,sizeof(PipeBuf));//没阻塞的读
printf(“ReadMessageare:%sn”,PipeBuf);
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系统如何切换前台进程和后台进程?
一、Shell支持作用控制,有以下命令:1.command让进程在后台运行2.jobs_l查看后台运行的进程3.fg%n让后台运行的进程n到前台来4.bg%n让进程n到后台去;PS:“n”为jobs查看到的进程编号。二、执行命令切换至后台在Linux终端运行命令的时候,在命令末尾加上符号,就可以让程序在后台运行root@Ubuntu$。/tcpserv01三、切换正在运行的程序到后台如果程序正在前台运行,可以使用Ctrl+z选项把程序暂停,然后用bg%[number]命令把这个程序放到后台运行,这个步骤分为3步,如下:1.暂停程序运行CTRL+Zctrl+z跟系统任务有关的,ctrl+z可以将一个正在前台执行的命令放到后台,并且暂停。[Oracle@linuxidc~]$shins.sh[1]+Stoppedins.sh2.查看暂停的程序察看jobs使用jobs或ps命令可以察看正在执行的jobs。[oracle@linuxidc~]$jobs-l[1]+4524Stoppedins.shjobs命令执行的结果,+表示是一个当前的作业,减号表是是当前作业之后的一个作业。jobs-l选项可显示所有任务的PID,jobs的状态可以是running,stopped,Terminated3.切换程序至后台bg将一个在后台暂停的命令,变成继续执行如果后台中有多个命令,可以用bg%jobnumber将选中的命令调出。[oracle@linuxidc~]$bg%1[oracle@linuxidc~]$jobs-l[1]+4524Runningins.sh4.切换程序至前台也可以用fg%[number]指令把一个程序掉到前台运行[oracle@linuxidc~]$fg%1。/tcpserv015.终止后台程序也可以直接终止后台运行的程序,使用kill命令[oracle@linuxidc~]$kill%1但是如果任务被终止了(kill),shell从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息。