4

我有一个简单的 C 程序,当我用 编译和运行它时./output,它是否在 Linux 上获得 PID?(我认为,每个正在运行的程序都是一个进程,它应该有一个 PID。)

我使用了该ps aux命令,但在那里找不到进程名称。

我记得,当我的控制台应用程序(一个 C 程序)在 Windows 7 上运行时,我能够通过 Volatility 工具获取它的 PID。

#include<stdio.h>

void main()
{
    printf("Hello World!");
}
4

5 回答 5

11

是的,Linux 上每个运行的程序都有一个 PID。

您的程序只是打印"Hello, World!",并且会很快完成,以至于在您运行ps aux时它已经完成。

此外,void main()应该是int main(void),并且您应该添加\n到输出字符串的末尾。

于 2012-10-06T06:33:24.017 回答
1

它应该。只需在您的程序中 printf getpid() 即可查看。

于 2012-10-06T06:34:14.010 回答
1

或者只是添加一个 sleep 以便您可以找到进程 ID。可能在你眨眼的时候跑了。

使用此代码并在单独的终端运行ps

#include <stdio.h>
#include <unistd.h>

int main(void)
{
  printf("Hello World!\n");
  sleep(3600);
  printf("Are you bored yet?\n");
} 
于 2012-10-06T06:40:18.820 回答
1

您可以使用 getpid 获取它

int main()
{
    pid_t pid; 
    printf("Hello World!");
    printf("pid of program is %d" , getpid());   
}

或者只是使用您的代码并将其放入后台。

void main()
{
    printf("Hello World!");
}

输出:

[xxxxx@localhost ~]$ ./c1 &
[1] 3007
3007 
于 2012-10-06T08:08:08.133 回答
0

是的,每个进程在运行时都会获得一个 PID。由于这个 C 程序似乎是一个非常短暂的进程,它可能在您运行ps aux命令以获取其 PID 之前完成。尝试调用getchar()scanf()等待用户输入,然后从不同的终端运行 ps 命令以查看 PID。

于 2012-10-06T06:34:15.640 回答