cuốn sách gpt4 ai đã làm

c - Nhiều tiến trình con từ một tiến trình cha

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 23:27:20 hai mươi bốn 4
mua khóa gpt4 Nike

Tôi đang triển khai chương trình quy trình cha/con đơn giản bằng cách sử dụng fork. Mục tiêu của tôi là tạo số đầu vào của người dùng cho các tiến trình con từ một tiến trình cha và lưu trữ PID của chúng trong một mảng động. Tôi đã quản lý để sử dụng fork để tạo các tiến trình con (tôi nghĩ vậy) và lưu trữ PIDS của chúng. Tuy nhiên, khi lưu PID, tôi cũng lưu 0 PID và một PID khác mà tôi nghĩ có liên quan đến tiến trình, nhưng con số này lớn hơn rất nhiều so với tiến trình con và tiến trình cha.

Tại sao điều này xảy ra khi rõ ràng điều này chỉ được thực hiện trong tiến trình gốc?

void createProcesses(int nProcess) {
int i;
int PID;
processIDS = calloc(nProcess, sizeof(long));

printf("****Tạo tiến trình*****\n");

printf("Tiến trình gốc: PID %d\n", getpid());
for (i = 0; i < nProcess; i++) {
PID = ngã ba();
nếu (PID == 0) {
printf("Tiến trình con: PID %d\n", getpid());
trong khi(1){}
}
khác nếu(PID != 0) {
// ngủ(3);
// printf("Số tiến trình con được tạo: %d\n", nProcess);
// updateProcessList();
*(processIDS + i) = PID;
printf("%d\n", PID);
}
}
for(i = 0; i < sizeof(processIDS); i++) {
printf("%ld\n", *(processIDS + i));
}
while(1) {
sleep(5);
updateProcessList();
}
}

processIDS là một biến toàn cục * dài.

câu trả lời hay nhất

Vấn đề nằm ở đây:

  for(i = 0; i < sizeof(processIDS); i++) {
printf("%ld\n", *(processIDS + i));
}

因为tiến trìnhIDSlà một con trỏ, kích thước của nó là mộtdài *Kích thước có thể là 4 hoặc 8, đây không phải là kích thước bạn muốn. nếu như nQuy trình Đối với các giá trị nhỏ hơn giá trị này, bạn sẽ đọc từ cuối mảng được phân bổ động, gọi hành vi không xác định.

bạn biết đã tạo ra nQuy trình quá trình này, vì vậy hãy sử dụng điều này để kiểm tra vòng lặp của bạn:

  for(i = 0; i < nProcess; i++) {
printf("%ld\n", *(processIDS + i));
}

Về c - nhiều tiến trình con từ một tiến trình cha, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/36455313/

hai mươi bốn 4 0
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