有没有办法打印调用我的C二进制文件的进程的PID

时间:2012-09-05 15:58:26

标签: c bash unix gcc solaris

我需要知道哪个perl脚本正在使用我的C CLI。

使用bash我可以使用以下方式轻松打印“who”运行脚本:

CALLER=$(ps ax | grep "^ *$PPID" | awk '{print $NF}')
echo $CALLER

到目前为止,我一直在使用它作为包装,但它并不理想。有没有办法从C中获取这些信息?

(我正在运行UNIX w / gcc)

3 个答案:

答案 0 :(得分:6)

使用getppid。请参阅linux手册页的man 2 getppidhere's

  

getppid()返回调用进程的父进程的进程ID

两个 p,因为这是“父进程”。

答案 1 :(得分:4)

您应该查看getpid中的getppid<unistd.h>个功能。

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

int
main(void)
{
    printf("%ld%ld", (long)getpid(), (long)getppid());
    return 0;
}

答案 2 :(得分:2)

使用getppid()获取进程'父级的进程ID。