สวัสดีฉันจะเขียนโค้ดให้คุณอธิบายให้คุณและหวังว่านี่จะช่วยคุณได้ ต้นแบบของฟังก์ชั่นมีลักษณะดังนี้:
ระบบ 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) เปิดเทอร์มินัลและรวบรวมโปรแกรม
2) เรียกใช้ (ตัวอย่างเช่นใน Ubuntu) ./program_name comman_name - ทุกอย่าง - อะไรก็ได้
ตัวอย่าง: ./a.out locale -a
ตัวอย่างนี้พิมพ์โลแคลทั้งหมดที่คอมไพเลอร์ของฉันรองรับซึ่งเป็น gcc
ข้อมูลเพิ่มเติม:
p เป็น poniter ไปยังตัวชี้ไปยัง char (เช่น argv is) p = & argv [2], ชี้ไปที่ - ทุกสิ่งที่สตริง cat แมวทั้งหมด - สิ่งเหล่านี้ไปยังสตริง cmd ของฉันฉันออกจากลูปเมื่อ * p ชี้ไปที่ค่า NULL ที่นี่: -> ฉันจะใช้สัญลักษณ์นี้เพื่อบอกว่าชี้ไปที่ (อย่าสับสนกับตัวเลือกลูกศรขวา)
argv [0] -> program_name
argv [1] -> command_name (ในชื่อคำสั่งตัวอย่างนี้จะเป็นสถานที่ แต่ป้อนคำสั่งที่คุณต้องการตรวจสอบแทน)
argv [2] -> - ทุกอย่าง (ในตัวอย่างนี้ -a ซึ่งเป็นตำแหน่งที่ตั้งทั้งหมด)
argv [3] -> NULL (ในตัวอย่างนี้จะออกจากลูป)
ตกลงฉันคิดว่า