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

Nhân bản và cờ CLONE_CHILD_CLEARTID

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 01:08:39 27 4
mua khóa gpt4 Nike

Tôi cần trợ giúp về lệnh gọi hệ thống clone(). Tôi đang cố gắng sử dụng nó với cờ CLONE_CHILD_CLEARTID nhưng tôi không thấy bất kỳ thay đổi nào trong các giá trị trường mà tôi chỉ định làm tham số. Đây là một mã đơn giản:

int the_child(){
thoát (0);
}
int main(int argc, char * argv[])
{
pid_t child_id = 99;
printf("con %p\n",child_id);

bản sao((int (*)(void *))the_child,
NULL,
CLONE_VM | CLONE_CHILD_CLEARTID |
NULL, NULL,NULL, child_id);

ngủ(1);
printf("con %p\n",child_id);
}

Nhưng khi cả hai bản in luôn hiển thị 99, tôi đang làm gì sai?

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

Bạn đang truyền theo giá trị id con. Bạn nên chuyển nó như một con trỏ.

Đây là nơi tin tức Việc dọn dẹp xảy ra trong kernel

/*
* Chúng tôi không kiểm tra mã lỗi - nếu vùng người dùng có
* không thiết lập một con trỏ thích hợp thì khó gặp may mắn.
*/
put_user(0, tsk->clear_child_tid);

Bạn có thể thấy cảnh báo bình luận tương tự không? :)

Xem blog nàyhọ vượt qua dấu vết

theo dõi clone Tham số cuộc gọi hệ thống

biên tập: Đã thêm dựa trên cuộc thảo luận của chúng tôi trong phần nhận xét,con_stacksys_clone Các cuộc gọi hệ thống có thể bằng 0, nhưng đối với các chức năng thư viện thì bạn không thể sao chép()

Về nhân bản và cờ CLONE_CHILD_CLEARTID, 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/9851973/

27 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