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

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 に答える
1

そうすべき。プログラムで printf getpid() を実行するだけで確認できます。

于 2012-10-06T06:34:14.010 に答える
1

または、スリープを追加して、プロセス 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 に答える
0

はい、すべてのプロセスは実行中に PID を取得します。この C プログラムは非常に短命のプロセスに見えるため、ps auxコマンドを実行して PID を取得する前に完了している可能性があります。ユーザー入力を待機するgetchar()orを呼び出してから、別の端末から ps コマンドを実行して PID を確認してください。scanf()

于 2012-10-06T06:34:15.640 に答える