发信人: tcpip (俺的昵称改了), 信区: cnunix
标  题: 怎样由进程名称得到进程号--C函数
发信站: 哈工大紫丁香 (Sun Sep 26 15:28:33 1999), 转信

发信人: cpu (奔腾的心), 信区: Solaris
发信站: 华南网木棉站 (Mon Aug 17 17:09:13 1998), 转信


如果泥懒一些,可以用popen(命令, "r")来得到,这样可以利用一下上一节的
shell命令,popen是运行shell命令,并且可以写该命令的标准输入或者读该命
令的标准输出,popen(..., "r")返回一个流,读该流就是读调用命令的标准输
出。

由此,泥就可以:

#include        <stdio.h>
#include        <sys/types.h>
#include        <errno.h>

pid_t getpidbyname(char *name)
{
        pid_t   pid;
        char    cmd[256];
        FILE    *output;

        sprintf(cmd, "ps -e|grep %s|awk '{print $1}'", name);
        if ((output = popen(cmd, "r")) == NULL) {
                perror("popen");
                exit(-1);
        }
        if (fscanf(output, "%u", &pid) == EOF) pid = -1;
        pclose(output);
        return pid;
}

不是很严谨,自己按需要改吧呵呵。。。
--

        ******************************************************
                
               青岛啤酒,可能是世界上最好的啤酒 。。。 。。。

        ******************************************************

※ 修改:.trueip 于 Sep 26 15:32:20 修改本文.[FROM: dns.mtlab.hit.ed]
--
※ 转寄:.华南网木棉站 bbs.gznet.edu.cn.[FROM: dns.mtlab.hit.ed]

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: trueip.bbs@melon.gzn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.686毫秒