sách gpt4 ăn đã đi

Sử dụng chương trình C để xuất thông tin sử dụng bộ nhớ của một tiến trình nhất định trong hệ thống Linux

In lại Tác giả: qq735679552 Thời gian cập nhật: 28-09-2022 22:32:09 34 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết trên blog CFSDN này sử dụng chương trình C để xuất thông tin sử dụng bộ nhớ của một tiến trình nhất định trong hệ thống Linux. Nếu bạn quan tâm đến bài viết này, hãy nhớ thích nó.

Lời nói đầu.

Chắc hẳn ai cũng từng gặp phải một tình huống nào đó. Trong công việc thực tế, đôi khi một chương trình cần in ra mức sử dụng bộ nhớ của một quy trình nhất định để tham khảo. Đây là chương trình tính toán mức sử dụng bộ nhớ của một quy trình nhất định thông qua hệ thống tệp giả /proc trong Linux. Cách thực hiện Không có nhiều điều để nói bên dưới, hãy cùng xem phần giới thiệu chi tiết.

Thực hiện phân tích.

Trước hết, tại sao lại có cái gọi là tệp giả? Các loại tệp trong hệ thống Linux có thể được chia đại khái thành ba loại: tệp thông thường, tệp thư mục và tệp giả không được sử dụng để lưu trữ dữ liệu, vì vậy các tệp này không được sử dụng. chiếm dung lượng ổ đĩa, nhưng Lives in Memory. /proc cho phép bạn tương tác với dữ liệu nội bộ của kernel và thu được thông tin hữu ích về quy trình.

Phần sau đây chủ yếu giới thiệu bốn tệp trong /proc: /proc/stat, /proc/meminfo, /proc//stat, /proc//status.

/proc/stat lưu trữ thời gian CPU của hệ thống. Tệp này chứa thông tin về tất cả các hoạt động của CPU.

?
1
2
3
4
5
6
7
8
CPU 72389 2891 16811 1148664 31374 0 67 0 0 0
cpu0 17608 452 3786 288899 6210 0 30 0 0 0
CPU1 18724 926 4598 285844 8911 0 15 0 0 0
CPU2 16803 658 3726 288710 7220 0 7 0 0 0
cpu3 19254 855 4700 285209 9032 0 13 0 0 0
...
...
...

/proc/meminfo lưu trữ thông tin bộ nhớ của hệ thống. Thông tin được biểu thị có thể được biết bằng tên của từng biến trong tệp.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
Tổng bộ nhớ: 4046236 kB
Bộ nhớ miễn phí: 1054440 kB
MemCó sẵn: 2460060 kB
Bộ đệm: 359688 kB
Đã lưu trong bộ nhớ đệm: 1158056 kB
Đã hoán đổi: 0 kB
Hoạt động: 2020096 kB
Không hoạt động: 677948 kB
Đang hoạt động(anon): 1181376 kB
 
...
...
...

/proc//stat lưu trữ thông tin cpu của một tiến trình.

?
1
2476 (firefox) S 1773 1910 1910 0 -1 4210688 3413511 1712 757 1 45466 4629 2 7 20 0 57 0 20381 1774743552 150565 18446744073709551615 94844693012480 94844693126372 140732961864784 140732961858304 139747170914269 0 0 4096 33572079 0 0 0 17 2 0 0 1178 0 0 94844695226592 94844695228536 94844713955328 140732961867643 140732961867668 140732961867668 140732961869791 0

/proc//status lưu trữ thông tin cpu của một quy trình và một số thông tin toàn diện.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Tên: firefox
Trạng thái: S (đang ngủ)
Bạn nói: 2476
Tôi nói: 0
Mã số: 2476
PPid: 1773
TracerPid: 0
Mã số: 1000 1000 1000 1000
Số lượng: 1000 1000 1000 1000
Kích thước FDS: 256
Nhóm: 4 24 27 30 46 108 124 1000
Mã số: 2476
Số lượng: 2476
NSpgid: 1910
NS: 1910
VmPeak: 1722812 kB
Kích thước Vm: 1690920 kB
VmLck: 0 KB
VmPin: 0 kB
VmHWM: 684048 kB
VmRSS: 600324 KB
Dữ liệu Vm: 993040 kB
VmStk: 192 kB
...
...
...

Dữ liệu trên có thể được lấy bằng cách đọc tệp. Dữ liệu tương ứng có thể được tính toán theo nhu cầu thử nghiệm của riêng bạn, chẳng hạn như pmem = VmRSS/MemTotal*100, v.v.

Mã mẫu.

Dưới đây chỉ là một ví dụ triển khai mã C đơn giản để lấy bộ nhớ thực tế bị chiếm bởi một tiến trình tại thời điểm hiện tại.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//lấy_bộ_nhớ.h
#include
#include
#include
#include
#include
#define VMRSS_LINE 21//Dòng chứa VMRSS Lưu ý: Vị trí có thể khác nhau tùy thuộc vào các hệ thống khác nhau.
#xác định pid_t int
số nguyên lấy_bộ_thân_thực( hằng số pid_t p)
{
  char tập tin[64] = {0}; // tên tệp
  TÀI LIỆU *fd;   //Định nghĩa con trỏ file fd
  char dòng_buff[256] = {0}; //Đọc bộ đệm dòng
  chạy nước rút (tài liệu, "/proc/%d/trạng thái" ,P);
  inf (stderr, "pid hiện tại:%d\n" , P);
  fd = fopen (tài liệu, "r" ); //Mở file ở chế độ đọc R và gán nó cho con trỏ fd
  //Nhận vmrss: mức sử dụng bộ nhớ vật lý thực tế
  số nguyên Tôi;
  char tên[32]; //Lưu tên dự án
  số nguyên vmrss; //Bộ nhớ lưu trữ
  //Đọc data dòng này của VmRSS
  (i=0;i
  {
   char *đúng = fgets (dòng_buff, kích thước của (dòng đệm), fd);
  }
  char * mạng1 = fgets (dòng_buff, kích thước của (dòng đệm), fd);
  quét (dòng_buff, "%s %d" , tên,&vmrss);
  inf (stderr, "====%s:%d====\n" , tên,vmrss);
  đóng (đăng ký);  //Đóng tập tin fd
  trở lại vmrss;
}
số nguyên lấy_rmem(pid_t p)
{
  trở lại lấy_bộ_phận_thực(p);
}
số nguyên lấy_tổng_bộ_nhớ()
{
  hằng số char * tập tin = "/proc/thông tin ghi nhớ" ; // tên tệp
  TÀI LIỆU *fd;   //Định nghĩa con trỏ file fd
  char dòng_buff[256] = {0}; //Đọc bộ đệm dòng
  fd = fopen (tài liệu, "r" ); //Mở file ở chế độ đọc R và gán nó cho con trỏ fd
  // Lấy memtotal: tổng mức sử dụng bộ nhớ
  số nguyên Tôi;
  char tên[32]; //Lưu tên dự án
  số nguyên tổng số tiền; // Kích thước bộ nhớ tối đa của bộ nhớ
  char *đúng = fgets (dòng_buff, kích thước của (dòng đệm), fd); //Đọc dữ liệu ở dòng memtotal, memtotal ở dòng 1
  quét (dòng_buff, "%s %d" , tên,&tổng số);
  inf (stderr, "====%s:%d====\n" , tên, tổng số hồ sơ);
  đóng (đăng ký);  //Đóng tập tin fd
  trở lại tổng số tiền;
}

tập tin kiểm tra

?
1
2
3
4
5
6
7
8
9
#include "get_mem.h"
số nguyên chủ yếu()
{
số nguyên danh sách[1024];
( số nguyên i = 0; i < 1024; i++)
  danh sách[i] = i;
số nguyên bộ nhớ = get_rmem(getpid());
 
}

Tóm tắt.

Trên đây là toàn bộ nội dung bài viết mong rằng nội dung bài viết có giá trị tham khảo nhất định cho quá trình học tập, làm việc của mọi người. Nếu có thắc mắc gì có thể để lại tin nhắn để trao đổi.

Liên kết gốc: http://www.linuxidc.com/Linux/2017-12/149850.htm.

Cuối cùng, bài viết này về cách sử dụng chương trình C để xuất thông tin sử dụng bộ nhớ của một tiến trình trong hệ thống Linux kết thúc tại đây. Nếu bạn muốn biết thêm về cách sử dụng chương trình C để xuất thông tin sử dụng bộ nhớ của một tiến trình trong hệ thống Linux, vui lòng tìm kiếm các bài viết của CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

34 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress