sách gpt4 ai đã đi

Không có kết quả!! Sử dụng fork() Sử dụng dup2 Sử dụng 2 đường ống để chạy execlp()

In lại Tác giả: Space Dog Thời gian cập nhật: 2023-10-29 11:38:40 35 4
mua khóa gpt4 Nike

Tôi đang viết một chương trình C để chạy các lệnh Linux, ví dụ:
mèo /etc/passwd | grep danh sách | cắt -c 1-5
Tôi không có kết quả nào
*Ở đây, cha mẹ đợi con đầu tiên (child_pid) hoàn thành;
Đứa con đầu tiên đang đợi đứa con thứ hai (pfils)!!
Bạn có ý tưởng nào không?
Mã số:

chủ yếu()
{
pid_t pid_con;
int fd[2];
int pfd[2];
ống(pfd);
child_pid = ngã ba();

nếu (child_pid != 0)
{
chờ(pid_con);
đóng(pfd[1]);
dup2(pfd[0],0);
đóng(pfd[0]);
execlp("cắt","cắt","-c","1-5",NULL);
}
khác
{
pid_t pfils = ngã ba();
ống(fd);

nếu(pfils == 0)
{
đóng(fd[0]);
dup2(fd[1],1);
đóng(fd[1]);
execlp("mèo", "mèo", "/etc/passwd", NULL);
}
khác
{
chờ(pfils);
đóng(fd[1]);
dup2(fd[0],0);
đóng(fd[0]);
đóng(pfd[0]);
dup2(pfd[1],1);
đóng(pfd[1]);
execlp("grep","grep","danh sách",NULL);
}
}
}

1 Câu trả lời

    pid_t pfils = ngã ba();
ống(fd);

Fork sẽ lặp lại quá trình này. Một bản sao riêng biệt của một quy trình. Vì vậy, nếu bạn gọi pipe sau fork, mỗi bản sao của quy trình sẽ có pipe riêng. Đặt pipe() trước fork() thì nó sẽ hoạt động.

Về c - không có kết quả!! Sử dụng fork() Sử dụng dup2 Sử dụng 2 đường ống để chạy execlp(), 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/14290129/

35 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