c - 用户输入到 C 中的 linux 命令

标签 c linux

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <time.h>
#include <string.h>

void getCommand(char* cmd, char** arg_list)
{
pid_t child_pid;

child_pid = fork();

if (child_pid == 0)
{
    execvp (cmd, arg_list);
    fprintf(stderr, "error");
    abort();
}

}

int main(void)
{

printf("Type the command\n");

char *arg_list[] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL};

char cmd[20];
char delim[2] = " ";
char *token;

scanf("%[^\n]", cmd);

token = strtok(cmd, delim);

while (token != NULL)
{
    arg_list[0] = token;
    token = strtok(NULL, cmd);
}

getCommand (arg_list[0], arg_list);
return 0;
}

我想在这里实现的是我想读取用户输入,这应该是一个 linux 命令,然后执行命令。看来我不能使用 strtok 来拆分我的字符串。我有点迷路了,感谢您的帮助。

最佳答案

您对 strtok 的连续调用是错误的。您需要传递定界符。此外,您只写入数组的第一个元素。试试这个:

int n = 0;
while (token != NULL && n < 7)
{
    arg_list[n++] = token;
    token = strtok(NULL, delim);
}

关于c - 用户输入到 C 中的 linux 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16513976/

相关文章:

c - 同一动态分配中的两种类型

linux - iozone 什么是记录大小/记录长度?

linux - cd 到 root - 在 Matlab 脚本中不起作用

linux - 使用 awk 和行首正则表达式获取段落

c - 我已经包含了一个头文件,但在尝试运行 make 时仍然未定义

c - 偏离说明,有趣但信息丰富的结构练习

c++ - 编译问题 gtk+

c++ - 我使用什么 C/C++ 库来更改 Windows 中的 HTTP 数据包?

linux - 在shell中递归地将文件内容添加到文件中

Javaagent 路径在 maven/linux/tomcat 上没有得到很好的解释