Tôi đang cố thực thi lệnh "đếm từ" trên một tệp được cung cấp bởi đường dẫn tuyệt đối - "/home/aaa/xxzz.txt". Tôi đã tắt đầu vào tiêu chuẩn để có thể nhận đầu vào từ một tệp, nhưng chương trình không đưa ra bất kỳ đầu ra nào. Ngoài ra, nếu tôi thêm một số câu lệnh sau lệnh "execve", nó cũng sẽ được thực thi. Chương trình có nên thoát sau khi thực thi không?
int main()
{
char *envp[]={NULL};
int fd=open("/home/aaa/xxzz.txt",O_RDONLY);
đóng(0);
dup(fd);
char *param[]={ "/bin/wc",NULL };
execve("/bin/wc",param,envp);
}
khả thi wc
không tồn tại trong /bin
trong (ngoại trừ một số liên kết tượng trưng với /usr/bin
hệ thống vì wc
thường được tìm thấy ở phần sau). Nếu tôi thay đổi đường dẫn trong ví dụ thành /usr/bin/wc
, nó hiệu quả với tôi:
#include
#include
int
chủ yếu()
{
char *envp[] = {NULL};
int fd = open("/home/aaa/xxzz.txt", O_RDONLY);
đóng(0);
dup(fd);
char *program = "/usr/bin/wc";
char *param[] = {program,NULL};
execve(chương trình, param, envp);
}
Tôi là một lập trình viên xuất sắc, rất giỏi!