我有一个简单的 C 程序,当我用 编译和运行它时./output
,它是否在 Linux 上获得 PID?(我认为,每个正在运行的程序都是一个进程,它应该有一个 PID。)
我使用了该ps aux
命令,但在那里找不到进程名称。
我记得,当我的控制台应用程序(一个 C 程序)在 Windows 7 上运行时,我能够通过 Volatility 工具获取它的 PID。
#include<stdio.h>
void main()
{
printf("Hello World!");
}
是的,Linux 上每个运行的程序都有一个 PID。
您的程序只是打印"Hello, World!"
,并且会很快完成,以至于在您运行ps aux
时它已经完成。
此外,void main()
应该是int main(void)
,并且您应该添加\n
到输出字符串的末尾。
它应该。只需在您的程序中 printf getpid() 即可查看。
或者只是添加一个 sleep 以便您可以找到进程 ID。可能在你眨眼的时候跑了。
使用此代码并在单独的终端运行ps
#include <stdio.h>
#include <unistd.h>
int main(void)
{
printf("Hello World!\n");
sleep(3600);
printf("Are you bored yet?\n");
}
您可以使用 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
是的,每个进程在运行时都会获得一个 PID。由于这个 C 程序似乎是一个非常短暂的进程,它可能在您运行ps aux
命令以获取其 PID 之前完成。尝试调用getchar()
或scanf()
等待用户输入,然后从不同的终端运行 ps 命令以查看 PID。