linux 中 /proc/<pid>/stat文件中的内容与man 5 proc 中的内容不符?
答案:3 悬赏:40 手机版
解决时间 2021-03-23 22:34
- 提问者网友:留有余香
- 2021-03-22 22:07
linux 中 /proc/<pid>/stat文件中的内容与man 5 proc 中的内容不符?
最佳答案
- 五星知识达人网友:动情书生
- 2021-03-22 23:45
根据不同的kernel ver, 可能有不同的项次
根据你的描述,可以参照kernel source code /fs/proc/array.c 的do_task_stat API 了解
部分source code 如下:
494 seq_printf(m, "%d (%s) %c", pid_nr_ns(pid, ns), tcomm, state);
495 seq_put_decimal_ll(m, ' ', ppid);
496 seq_put_decimal_ll(m, ' ', pgid);
497 seq_put_decimal_ll(m, ' ', sid);
498 seq_put_decimal_ll(m, ' ', tty_nr);
499 seq_put_decimal_ll(m, ' ', tty_pgrp);
500 seq_put_decimal_ull(m, ' ', task->flags);
501 seq_put_decimal_ull(m, ' ', min_flt);
502 seq_put_decimal_ull(m, ' ', cmin_flt);
503 seq_put_decimal_ull(m, ' ', maj_flt);
504 seq_put_decimal_ull(m, ' ', cmaj_flt);
505 seq_put_decimal_ull(m, ' ', cputime_to_clock_t(utime));
506 seq_put_decimal_ull(m, ' ', cputime_to_clock_t(stime));
507 seq_put_decimal_ll(m, ' ', cputime_to_clock_t(cutime));
508 seq_put_decimal_ll(m, ' ', cputime_to_clock_t(cstime));
509 seq_put_decimal_ll(m, ' ', priority);
510 seq_put_decimal_ll(m, ' ', nice);
511 seq_put_decimal_ll(m, ' ', num_threads);
512 seq_put_decimal_ull(m, ' ', 0);
513 seq_put_decimal_ull(m, ' ', start_time);
514 seq_put_decimal_ull(m, ' ', vsize);
515 seq_put_decimal_ull(m, ' ', mm ? get_mm_rss(mm) : 0);
516 seq_put_decimal_ull(m, ' ', rsslim);
517 seq_put_decimal_ull(m, ' ', mm ? (permitted ? mm->start_code : 1) : 0);
518 seq_put_decimal_ull(m, ' ', mm ? (permitted ? mm->end_code : 1) : 0);
519 seq_put_decimal_ull(m, ' ', (permitted && mm) ? mm->start_stack : 0);
520 seq_put_decimal_ull(m, ' ', esp);
521 seq_put_decimal_ull(m, ' ', eip);
522
526 seq_put_decimal_ull(m, ' ', task->pending.signal.sig[0] & 0x7fffffffUL);
527 seq_put_decimal_ull(m, ' ', task->blocked.sig[0] & 0x7fffffffUL);
528 seq_put_decimal_ull(m, ' ', sigign.sig[0] & 0x7fffffffUL);
529 seq_put_decimal_ull(m, ' ', sigcatch.sig[0] & 0x7fffffffUL);
530 seq_put_decimal_ull(m, ' ', wchan);
531 seq_put_decimal_ull(m, ' ', 0);
532 seq_put_decimal_ull(m, ' ', 0);
533 seq_put_decimal_ll(m, ' ', task->exit_signal);
534 seq_put_decimal_ll(m, ' ', task_cpu(task));
535 seq_put_decimal_ull(m, ' ', task->rt_priority);
536 seq_put_decimal_ull(m, ' ', task->policy);
537 seq_put_decimal_ull(m, ' ', delayacct_blkio_ticks(task));
538 seq_put_decimal_ull(m, ' ', cputime_to_clock_t(gtime));
539 seq_put_decimal_ll(m, ' ', cputime_to_clock_t(cgtime));
540
541 if (mm && permitted) {
542 seq_put_decimal_ull(m, ' ', mm->start_data);
543 seq_put_decimal_ull(m, ' ', mm->end_data);
544 seq_put_decimal_ull(m, ' ', mm->start_brk);
545 seq_put_decimal_ull(m, ' ', mm->arg_start);
546 seq_put_decimal_ull(m, ' ', mm->arg_end);
547 seq_put_decimal_ull(m, ' ', mm->env_start);
548 seq_put_decimal_ull(m, ' ', mm->env_end);
549 } else
550 seq_printf(m, " 0 0 0 0 0 0 0");
551
552 if (permitted)
553 seq_put_decimal_ll(m, ' ', task->exit_code);
554 else
555 seq_put_decimal_ll(m, ' ', 0);
556
557 seq_putc(m, '\n');
558 if (mm)
559 mmput(mm);
560 return 0;
561 }
根据你的描述,可以参照kernel source code /fs/proc/array.c 的do_task_stat API 了解
部分source code 如下:
494 seq_printf(m, "%d (%s) %c", pid_nr_ns(pid, ns), tcomm, state);
495 seq_put_decimal_ll(m, ' ', ppid);
496 seq_put_decimal_ll(m, ' ', pgid);
497 seq_put_decimal_ll(m, ' ', sid);
498 seq_put_decimal_ll(m, ' ', tty_nr);
499 seq_put_decimal_ll(m, ' ', tty_pgrp);
500 seq_put_decimal_ull(m, ' ', task->flags);
501 seq_put_decimal_ull(m, ' ', min_flt);
502 seq_put_decimal_ull(m, ' ', cmin_flt);
503 seq_put_decimal_ull(m, ' ', maj_flt);
504 seq_put_decimal_ull(m, ' ', cmaj_flt);
505 seq_put_decimal_ull(m, ' ', cputime_to_clock_t(utime));
506 seq_put_decimal_ull(m, ' ', cputime_to_clock_t(stime));
507 seq_put_decimal_ll(m, ' ', cputime_to_clock_t(cutime));
508 seq_put_decimal_ll(m, ' ', cputime_to_clock_t(cstime));
509 seq_put_decimal_ll(m, ' ', priority);
510 seq_put_decimal_ll(m, ' ', nice);
511 seq_put_decimal_ll(m, ' ', num_threads);
512 seq_put_decimal_ull(m, ' ', 0);
513 seq_put_decimal_ull(m, ' ', start_time);
514 seq_put_decimal_ull(m, ' ', vsize);
515 seq_put_decimal_ull(m, ' ', mm ? get_mm_rss(mm) : 0);
516 seq_put_decimal_ull(m, ' ', rsslim);
517 seq_put_decimal_ull(m, ' ', mm ? (permitted ? mm->start_code : 1) : 0);
518 seq_put_decimal_ull(m, ' ', mm ? (permitted ? mm->end_code : 1) : 0);
519 seq_put_decimal_ull(m, ' ', (permitted && mm) ? mm->start_stack : 0);
520 seq_put_decimal_ull(m, ' ', esp);
521 seq_put_decimal_ull(m, ' ', eip);
522
526 seq_put_decimal_ull(m, ' ', task->pending.signal.sig[0] & 0x7fffffffUL);
527 seq_put_decimal_ull(m, ' ', task->blocked.sig[0] & 0x7fffffffUL);
528 seq_put_decimal_ull(m, ' ', sigign.sig[0] & 0x7fffffffUL);
529 seq_put_decimal_ull(m, ' ', sigcatch.sig[0] & 0x7fffffffUL);
530 seq_put_decimal_ull(m, ' ', wchan);
531 seq_put_decimal_ull(m, ' ', 0);
532 seq_put_decimal_ull(m, ' ', 0);
533 seq_put_decimal_ll(m, ' ', task->exit_signal);
534 seq_put_decimal_ll(m, ' ', task_cpu(task));
535 seq_put_decimal_ull(m, ' ', task->rt_priority);
536 seq_put_decimal_ull(m, ' ', task->policy);
537 seq_put_decimal_ull(m, ' ', delayacct_blkio_ticks(task));
538 seq_put_decimal_ull(m, ' ', cputime_to_clock_t(gtime));
539 seq_put_decimal_ll(m, ' ', cputime_to_clock_t(cgtime));
540
541 if (mm && permitted) {
542 seq_put_decimal_ull(m, ' ', mm->start_data);
543 seq_put_decimal_ull(m, ' ', mm->end_data);
544 seq_put_decimal_ull(m, ' ', mm->start_brk);
545 seq_put_decimal_ull(m, ' ', mm->arg_start);
546 seq_put_decimal_ull(m, ' ', mm->arg_end);
547 seq_put_decimal_ull(m, ' ', mm->env_start);
548 seq_put_decimal_ull(m, ' ', mm->env_end);
549 } else
550 seq_printf(m, " 0 0 0 0 0 0 0");
551
552 if (permitted)
553 seq_put_decimal_ll(m, ' ', task->exit_code);
554 else
555 seq_put_decimal_ll(m, ' ', 0);
556
557 seq_putc(m, '\n');
558 if (mm)
559 mmput(mm);
560 return 0;
561 }
全部回答
- 1楼网友:鱼芗
- 2021-03-23 02:11
man page中,有一些是outdate的.
- 2楼网友:舊物识亽
- 2021-03-23 01:07
机器人goodblowjob,不但会发帖,还会回帖。虽说问题问得还行
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯