Xin chào tôi sẽ viết cho bạn một mã ví dụ, giải thích cho bạn và thực sự hy vọng điều này sẽ giúp bạn. nguyên mẫu của hàm là một cái gì đó như:
hệ thống int (const char * cmd);
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CMN_LEN 100
int main(int argc, char *argv[])
{
char cmd[MAX_CMN_LEN] = "", **p;
if (argc < 2) /*no command specified*/
{
fprintf(stderr, "Usage: ./program_name terminal_command ...");
exit(EXIT_FAILURE);
}
else
{
strcat(cmd, argv[1]);
for (p = &argv[2]; *p; p++)
{
strcat(cmd, " ");
strcat(cmd, *p);
}
system(cmd);
}
return 0;
}
1). mở một thiết bị đầu cuối và biên dịch chương trình
2). chạy nó (ví dụ trong Ubuntu) ./program_name comman_name -anything - mọi thứ
ví dụ: ./a.out miền địa phương -a
ví dụ này in tất cả các ngôn ngữ được hỗ trợ bởi trình biên dịch của tôi là gcc.
thêm thông tin:
p là một poniter để trỏ đến char (như argv là) p = & argv [2], trỏ đến chuỗi mọi thứ tôi gửi tất cả các chuỗi cho chuỗi cmd của tôi, tôi thoát khỏi vòng lặp khi * p trỏ tới NULL nhìn vào đây: -> tôi sẽ sử dụng biểu tượng này để nói các điểm tới (đừng nhầm nó với toán tử chọn mũi tên phải).
argv [0] -> chương trình tên
argv [1] -> command_name (trong ví dụ này tên lệnh sẽ là miền địa phương, nhưng hãy nhập lệnh bạn muốn kiểm tra thay thế)
argv [2] -> -tất cả mọi thứ (trong ví dụ này -a, đó là tất cả các địa phương)
argv [3] -> NULL (trong ví dụ này, điều này thoát khỏi vòng lặp)
ok đó là nó, tôi nghĩ.