#include <stdio.h>
#include <unistd.h>
#include <string.h>
int get_shell_cmd_infor(const char * Cmd, char *Buf)
{
FILE* pResultStr = NULL;
/* 创建子进程,执行shell命令 */
pResultStr = popen(Cmd, "r");
if (NULL == pResultStr)
{
//printf("popen faild. (%d, %s)\n",errno, strerror(errno));
return -1;
}
/* 获取返回结果 */
fread(Buf, 1, sizeof(Buf), pResultStr);
/* 打印命令返回内容 */
printf("Info: %s\n", Buf);
/* 不要忘记关闭句柄 */
pclose(pResultStr);
}
int main(void)
{
FILE* pResultStr = NULL;
char inforbuf[1024*4] = {0};
int entropy_avail=0;
printf("\n----test---start\n");
while(1)
{
usleep(1000*100);
get_shell_cmd_infor("cat /proc/sys/kernel/random/entropy_avail",inforbuf);
entropy_avail=atoi(inforbuf);
printf("entropy_avail=%d\n",entropy_avail);
if(entropy_avail>1500)
{
break;
}
}
//通过进程名字 获取进程ID
get_shell_cmd_infor("pidof haveged",inforbuf);
int pid=atoi(inforbuf);
printf("pid=%d\n",pid);
char cmd[30]={0};
sprintf(cmd,"%s%d","kill -9 ",pid);
printf("cmd=%s\n",cmd);
system(cmd);
return 0;
}
c语言获取shell 指令返回值
最新推荐文章于 2023-06-07 14:42:57 发布