时间:2022-12-22 10:33编辑:九州下载来源:www.wzjsgs.com
Linux中echo $$内置变量表示进程的PID值。
pid是给进程用的,端口号是给网络端口用的,端口不一定被进程使用,进程也可以使用多个端口。本质上来讲两个ID描述的是不同的东西。
代码示例:
#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);
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;
}
然后你就可以通过一些图形做一些动态展示了。
一、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环境中所起的后台正在运行或者被挂起的任务信息。
专业数据统计,95%的用户会因为[不安全]提示而放弃访问,从而给网站造成用户流失。问题就出在不安全的HTTP 明文传输协议上。2018年2月初,谷歌旗下Chrome浏览器宣布“封杀”HTTP协议的网站,并将这些网站标示为“Not Secure”(不安全)。
2023-03-03 21:141、do-while语句是一种后测试循环语句,即循环体中的代码执行后才会对退出条件进行求值。2、循环体内的代码至少执行一次。do-while的语法如下:do{ statement }while(expression)下面是一个例子:letxhs=0 do{ xhs+=2 }while(xhs<10)在上面的
2023-02-26 12:191、while语句是一种先测试循环语句,即先检测退出条件,再执行循环体内的代码。2、while循环体内的代码有可能不会执行。下面是 while 循环的语法:while(expression){ statement }实例leti=0 while(i<10){ i+=2 }在这个例子中,变量 xhs 从 0 开
2023-02-26 12:181、for语句也是先测试语句,只不过增加了进入循环之前的初始化代码.以及循环执行后要执行的表达式(loop-expression),语法如下:for(initialization;expression;loop-expression){ statement }下面是一个用例:letxhsLength=10 for(letxhs=0;xh
2023-02-26 12:17说明1、for-of语句是一种严格的迭代语句,用于遍历可迭代对象的元素。2、for-of循环将按照可迭代对象的next()方法产生值的顺序迭代元素。关于可迭代对象,请参考ES6系列的Iterator。如果尝试迭代的变量不支持迭代,for-of语句就会出错。语法:只
2023-02-26 12:16说明1、switch语句可用于所有的数据类型(在许多语言中,它只能用于数值),因此可以使用字符串甚至对象。2、条件值不一定是常量,或者是一个变量或者一个表达式。实例switch('helloxhsRookies'){ case'hello'+'xhsRookies&#
2023-02-26 12:15发布日期:2022-10-29人气:641
发布日期:2022-10-10人气:555
发布日期:2022-09-29人气:335
发布日期:2022-09-04人气:311
发布日期:2023-01-16人气:226
发布日期:2022-10-02人气:149
发布日期:2022-11-07人气:145