sách gpt4 ai đã đi

Người dùng nào có thể sử dụng hàm setpgid()?

In lại Tác giả: IT Prince Thời gian cập nhật: 2023-10-29 00:38:14 32 4
mua khóa gpt4 Nike

Khi tôi thực thi hàm này, tôi không biết phải làm gì với setpgid() và kết quả là quyền bị từ chối. Sau đó tôi đã đăng nhập với tư cách là người dùng root tại thời điểm đó, thông báo lỗi cũng được in ra vì quyền bị từ chối. Vậy người dùng nào có thể sử dụng chức năng này? Có ai có thể giải thích điều này cho tôi không?

   #include 
#include
#include

chủ yếu()
{
printf("pid cha=%d\tpgid=%d\n",getpid(),getpgid(getpid()));
pid_t pid,pgid;
pgid = getpgid(getpid();
nếu ((pid=fork())==0)
{
printf("trước sessionchild pid=%d\tpgid=%d\n",getpid(),getpgid(getpid()));
ngủ(5);
pid_t p;
printf("pid con=%d\tpgid=%d\n",getpid(),getpgid(getpid()));
nếu((p=fork())==0){
ngủ(2);
tập hợp();
printf("pid của child2=%d\tpgid=%d\n",getpid(),getpgid(getpid()));
thiết lậppgid(getpid(),pgid);
perror("Lỗi");
printf("sau khi thiết lập nhóm id child2 pid=%d\tpgid=%d\n",getpid(),getpgid(getpid()));
}
chờ(0);
thoát(0);
}
thoát(0);
}

1 Câu trả lời

Đầu tiên, bạn thực sự cần phải gọi lỗi() Kiểm tra giá trị trả về của lệnh gọi hàm trước đó, nếu không bạn sẽ không biết lệnh gọi nào đã thất bại - có thể nó không nằm trong lỗi() Cuộc gọi gần đây nhất trước khi tuyên bố đã thất bại. Mã sẽ trông như thế này:

nếu (setpgid(getpid(),pgid) != 0) {
perror("thiết lậppgid");
}

Nếu setpgid() không thành công, thì đây là tài liệu Nội dung ghi rằng:

EPERM Đã có nỗ lực di chuyển một tiến trình vào một nhóm tiến trình trong một phiên khác hoặc thay đổi ID nhóm tiến trình của một trong các tiến trình con của tiến trình gọi và tiến trình con đó đang ở trong một phiên khác hoặc thay đổi ID nhóm tiến trình của người dẫn đầu phiên (setpgid(), setpgrp()).

Vì vậy, có vẻ như bạn đang gặp phải sự cố vì các cuộc gọi quy trình con của bạn tập hợp() Đây là trường hợp đầu tiên được mô tả cho đến nay.

Về Kiểm soát công việc Tài liệu glibc có một số tài liệu tham khảo về chủ đề này.

Người dùng nào có thể sử dụng hàm setpgid()? , 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/27505222/

32 4 0
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