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

c - phương pháp hiệu quả hơn: execlp(cmd[0], cmd[0], cmd[1] cmd[2], cmd[3] NULL);

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 08:05:51 29 4
mua khóa gpt4 Nike

Tôi đang cố gắng tạo một chương trình giao diện dòng lệnh lấy các dòng mã từ đầu vào của người dùng và thực thi chúng bằng execlp.

Tôi tự hỏi liệu có cách nào tốt hơn để viết mã của mình không.

execlp(cmd[0], cmd[0], cmd[1] cmd[2], cmd[3] NULL);
perror("Execlp");

Ví dụ người dùng nhập 4 từ, mỗi từ sẽ được lưu vào:

cmd[0] cmd[1] cmd[2] cmd[3]

Nếu chúng ta sử dụng cc helloworld.c -o helloworld Hàm biên dịch sẽ yêu cầu mảng cmd[]

4 khoảng trống bên trong

Hoặc chúng tôi sử dụng./helloworld

nó sẽ được lưu trữ trong cmd[0] và chạy nó, nó hoạt động rất tốt

Nhưng tôi giả sử nếu có một hàm yêu cầu nhiều hơn 4 từ, liệu chương trình của tôi có thể thực thi chúng không? Câu trả lời có lẽ là không, ví dụ: nếu có 5 từ trở lên, tôi không nghĩ chương trình của tôi có thể chạy được, trừ khi trong hàm của tôi nó hoạt động với 5 phần tử

execlp(cmd[0], cmd[0], cmd[1] cmd[2], cmd[3]. cmd[4], NULL);

hoặc

execlp(cmd[0], cmd[0], cmd[1] cmd[2], cmd[3], cmd[4], cmd[5], cmd[6], NULL);
perror("Execlp");

Có cách nào hiệu quả hơn để làm điều này? Bằng cách sử dụng exec() Các chức năng khác trong chuỗi.

Cảm ơn:)

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

sử dụng execvp() Thế còn nó thì sao? Ví dụ:

[BƯỚC 110] # cat execvp.c
#include

int
chính(int argc, char *argv[])
{
/* argv[argc] luôn là NULL */
execvp(argv[1], &argv[1]);
return 0;
}
[BƯỚC 111] # gcc -Wall execvp.c
[BƯỚC 112] # ./a.out echo 1
1
[BƯỚC 113] # ./a.out echo 1 2
1 2
[BƯỚC 114] # ./a.out echo 1 2 3
1 2 3
[BƯỚC 115] #

Về c - một phương pháp hiệu quả hơn: execlp(cmd[0], cmd[0], cmd[1] cmd[2], cmd[3] NULL) ;, 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/42972509/

29 4 0
không gian vũ trụ
Hồ sơ

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á taxi Didi miễn phí
Phiếu giảm giá taxi Didi
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