linux进程pid(linux 进程 pid)

linux进程pid(linux

linux中哪个内置变量表示进程的pid值?

Linux中echo $$内置变量表示进程的PID值。

linux中pid和端口号区别?

pid是给进程用的,端口号是给网络端口用的,端口不一定被进程使用,进程也可以使用多个端口。本质上来讲两个ID描述的是不同的东西。

Linux下进程的创建与进程间通信?

代码示例:

#include <stdio.h>

#include <unistd.h>

#include <fcntl.h>

#define READ_TERMINAL 0

#define WRITE_TERMINAL 1

int main() {

int file_descriptors;

pid_t pid_f;

char PipeBuf={‘a’,‘0’};

int read_ret=0;

pipe(file_descriptors);

pid_f=fork();

if (pid_f<0)

{

printf(“fork error!n”);

exit(1);

}

else if (pid_f==0)

{

//子进程向父进程发一则消息

printf(“Write in Pipe To FatherProcess!n”);

close(file_descriptors);

sleep(1);

write(file_descriptors,“Child Send”,sizeof(“Child Send”));

//open(file_descriptors);

}

else

{

//父进程接收(读取)消息

printf(“Read in Pipe From ChildProcess!n”);

//通过fcntl()修改为使得读管道数据具有非阻塞的特性

int flag=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(“Read Message are : %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中的一些数据,比如:

//获取进程占用内存

unsigned int get_proc_mem(unsigned int pid){

char file_name={0};

FILE *fd;

char line_buff={0};

sprintf(file_name,”/proc/%d/status”,pid);

fd =fopen(file_name,”r”);

if(nullptr == fd){

return 0;

}

char name;

int vmrss;

for (int i=0; i<VMRSS_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);

return vmrss;

}

然后你就可以通过一些图形做一些动态展示了。

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+Z  ctrl + z跟系统任务有关的,ctrl + z可以将一个正在前台执行的命令放到后台,并且暂停。  [Oracle@linuxidc ~]$ sh ins.sh  [1]+Stopped ins.sh  2.查看暂停的程序  察看jobs使用jobs或ps命令可以察看正在执行的jobs。  [oracle@linuxidc ~]$ jobs -l  [1]+ 4524Stopped ins.sh  jobs命令执行的结果,+表示是一个当前的作业,减号表是是当前作业之后的一个作业。  jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped,Terminated  3.切换程序至后台  bg将一个在后台暂停的命令,变成继续执行如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出。  [oracle@linuxidc ~]$ bg %1  [oracle@linuxidc ~]$ jobs -l  [1]+ 4524Running ins.sh  4.切换程序至前台  也可以用 fg %[number]指令把一个程序掉到前台运行  [oracle@linuxidc ~]$ fg %1  。/tcpserv01  5.终止后台程序  也可以直接终止后台运行的程序,使用 kill 命令  [oracle@linuxidc ~]$ kill %1  但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平