Я не уверен, для чего на самом деле предназначена ваша программа, но если особых ограничений нет, вы можете попробовать вызывать команды оболочки на C:
/**
* @brief exec_shcmd - execute a shell command via popen
*(This function doesn't support write command now. such as 'echo "abc" > abc.txt')
*
* @para cmd_line - shell command string
* @para read_buf - output string buffer after execute command
* @para len - length of read buffer
*
* @return result of shell command execute
* @retval 0 - success
* @retcal -1 - failed
*/
int exec_shcmd(char *cmd_line, char *read_buf, ssize_t len)
{
FILE *stream;
if ((cmd_line == NULL) || (read_buf == NULL) || (len == 0)) {
assert(0);
return -1;
}
stream = popen(cmd_line, "r");
if (stream == NULL) {
assert(0);
return -1;
}
memset(read_buf, 0, len);
fread(read_buf, sizeof(char), len, stream);
pclose(stream);
printf("execute a shell command: %s", cmd_line);
printf("shell command return: %s", read_buf);
return 0;
}
Это функция, которую я использую,Вы можете изменить его в соответствии с вашими потребностями.И вы можете использовать его так:
void main(void)
{
char *cmd = "ls -al\n";
char buf[500];
int ret;
printf("<-----------cmd exec------------->\n");
ret = exec_shcmd(cmd, buf, sizeof(buf));
printf("result(0 - success -1 - fail): <%d>\n", ret);
}