使用execlp()打印pstree

时间:2018-12-11 19:05:27

标签: c++ fork exec pstree

我仅在代码中需要打印过程树的帮助。多亏了stackoverflow社区,我编写了一个程序,该程序使用fork()函数创建了多个进程,现在我需要使用execlp()函数在屏幕上打印进程树。

int main()
{
    int t = 5;
    int mainPID = getpid();
    cout << "Main process: " << mainPID << endl << endl;

    int pid;
    if ((pid = fork()) == -1) return -1;
    if (pid == 0)
    {
        cout << "source for child process ";
    }
    else{
        cout << "source for parent process ";
    }
    sleep(t);
    return 0;
}

当我在另一个终端类型的实例上运行程序时

pstree /mainPID/ 

我得到了从mainPID开始打印的树。我需要从代码中打印出那棵树,但是当放入代码时

execlp("pstree", "pstree", "-c", "-p", (int *)NULL);

我从所有系统获得打印树

execlp("pstree", "pstree", mainPID, "-c", "-p", (int *)NULL);

不打印任何内容。

2 个答案:

答案 0 :(得分:0)

execlp将char * const argv []用作其余参数...

因此,请尝试将“ mainPID”转换为char []

这对我来说很有效。

答案 1 :(得分:-1)

您应将mainPID转换为字符串或char *,然后尝试执行此操作。