当前位置: 技术问答>linux和unix
unix编程:怎么判断一个进程是否存在呢?有无系统调用方法?
来源: 互联网 发布时间:2015-09-10
本文导语: 除了调用system使用ps查看外,有其他方法吗? | 楼主最好说明确切的系统,因为不同系统的处理方法是不同的 #if defined(ORION_FEAT_PROCTAB) …… #endif #if defined(ORION_FEAT_PROCFS) const char * const S_Pa...
除了调用system使用ps查看外,有其他方法吗?
|
楼主最好说明确切的系统,因为不同系统的处理方法是不同的
#if defined(ORION_FEAT_PROCTAB)
……
#endif
#if defined(ORION_FEAT_PROCFS)
const char * const S_PathProc = "/proc";
……
#if defined(UW2)
struct psinfo recInfo;
#endif
#if defined(SUN5)
struct prpsinfo recInfo;
#endif
……
/* 注:atoi(dp->d_name) 为进程对应的文件名 */
#if defined(UW2)
sprintf(fullpath, "%s/%d/psinfo", S_PathProc, atoi(dp->d_name));
#else
sprintf(fullpath, "%s/%d", S_PathProc, atoi(dp->d_name));
#endif
……
if ((fd = open(fullpath, O_RDONLY)) == -1) {
……
}
#if defined(UW2)
if (read(fd, &recInfo, sizeof(recInfo)) == -1) {
……
}
#else
if (ioctl(fd, PIOCPSINFO, &recInfo) == -1) {
……
}
#endif
……
#endif
#if defined(ORION_FEAT_PROCTAB)
……
#endif
#if defined(ORION_FEAT_PROCFS)
const char * const S_PathProc = "/proc";
……
#if defined(UW2)
struct psinfo recInfo;
#endif
#if defined(SUN5)
struct prpsinfo recInfo;
#endif
……
/* 注:atoi(dp->d_name) 为进程对应的文件名 */
#if defined(UW2)
sprintf(fullpath, "%s/%d/psinfo", S_PathProc, atoi(dp->d_name));
#else
sprintf(fullpath, "%s/%d", S_PathProc, atoi(dp->d_name));
#endif
……
if ((fd = open(fullpath, O_RDONLY)) == -1) {
……
}
#if defined(UW2)
if (read(fd, &recInfo, sizeof(recInfo)) == -1) {
……
}
#else
if (ioctl(fd, PIOCPSINFO, &recInfo) == -1) {
……
}
#endif
……
#endif
|
/proc下面去找
|
不是所有的Unix都是用procfs的……
譬如FreeBSD默认没有……
譬如FreeBSD默认没有……