请教各位高手,在unix下什么函数可以检查某个已知名称的进程是否运行?

fangprog 2003-03-24 02:20:27
谢谢各位阿,一定要C函数才可以,Shell的话就不行了
...全文
65 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
anneal 2003-03-31
  • 打赏
  • 举报
回复
ps -ef |grep ProcName

如果在运行,第二项就是它的进程编号
eric_uugames 2003-03-31
  • 打赏
  • 举报
回复
File *fp;
char tmp[64], pid[16], procname[64], buf[256];

fp = popen("ps -e", "r");
while(fgets(buf, sizeof(buf), fp))
{
//PID TTY TIME CMD
sscanf(buf, "%s%s%s%s", pid, tmp, tmp, procname);
if(strcmp(procname, __YOUR_PROCNAME) == 0)
{
pclose(fp);
return atoi(pid);
}
pclose(fp);
return __NOT_EXIST__
}
zhaoly 2003-03-27
  • 打赏
  • 举报
回复
liyifang 的办法可以,我用过。
zhujisheng 2003-03-27
  • 打赏
  • 举报
回复
似乎没有跨平台的实现,在BSD下是用kvm_getprocs()。
liyifang 2003-03-24
  • 打赏
  • 举报
回复
那你就用管道popen,取得一个条形如ps -ef |grep ProcName的命令的输出,中间有进程号
fangprog 2003-03-24
  • 打赏
  • 举报
回复
各位高手,帮帮小弟吧!我在HP下发现可以用pstat_getproc,可是不能跨平台,希望可以得到可以跨平台的函数。
fangprog 2003-03-24
  • 打赏
  • 举报
回复
不是通信问题,是现在知道一个可执行文件的全路径名,而我想根据他检查该程序是否运行,如果运行,就获得他的进程id
liyifang 2003-03-24
  • 打赏
  • 举报
回复
使用ipc实现进程间通信,更简单的办法就是使用文件来通信。

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧