sách gpt4 ai đã đi

Lỗi phân đoạn trên master/slave

In lại 作者:行者123 更新时间:2023-11-30 16:27:27 30 4
mua khóa gpt4 Nike

谁能向我解释一下为什么我在这段代码上遇到段错误?我一直试图弄清楚这一点,但在各种搜索中却一无所获。当我运行代码而不调用 main(argc, argv) 时,它会运行。 Slave 仅将 argv 中的 2 个数字转换为整数,然后返回它们。谢谢。

#include 
#include
#include
#include

int main(int argc, char* argv[])
{
int i;
int* sums;
sums[argc];
pid_t cpid;
int status;
char* args[10];
int count = 1;

for(i = 0; i < (argc / 2); i++) {
cpid = fork();

if(cpid == 0) {
args[1] = argv[count];
args[2] = argv[count + 1];
execvp("./slave", args);
} khác {
waitpid(cpid, &status, 0);
sums[i] = WEXITSTATUS(status);

printf("Child returned the number %d\n", sums[i]);
sprintf(argv[i+1], "%d", sums[i]);
}
count += 2;
}

if(sums[0] == 0) {
printf("done\n");
} khác {
main(argc/2, args);
}
}

1 Câu trả lời

第一个问题是您没有为 sums 分配任何内存,并且 sums[i] 访问了一个垃圾位置。这样做:

 int sums[argc];

其次,对于 execvp 函数参数数组必须具有1. [0] -- 合法的字符串。2.最后一个元素[3]必须为NULL

       args[0] = "some-execution-file-name";
args[1] = argv[count];
args[2] = argv[count + 1];
args[3] = NULL;

否则该函数不知道数组的大小,并且从属设备可能会在尝试读取元素 [0] 时死亡。

关于c - 主/从设备出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52731050/

30 4 0
行者123
Hồ sơ cá nhân

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á Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com