当前正在接收输入linux shell命令的程序,并执行它们来创建子进程。从用户输入获取shell命令并执行C程序
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
int main(int argc, char * argv[])
{
int pid, status;
if (argc < 2) {
printf("Usage: %s command, [arg1 [arg2]...]\n", argv[0]);
return EXIT_FAILURE;
}
printf("Starting %s...\n", argv[1]);
pid = fork();
if (pid == 0) {
execvp(argv[1], &argv[1]);
perror("execvp");
return EXIT_FAILURE; // Never get there normally
} else {
if (wait(&status) == -1) {
perror("wait");
return EXIT_FAILURE;
}
}
return EXIT_SUCCESS;
}
作品与像./program command arg
输入,但需要与例如ARGS接收各种命令:./program command arg command arg .....
任何建议?
但我想让用户使用任意数量的命令与参数,当然,我将不得不改变,如果(argc> 2),但不知道如何处理,而不知道用户命令的数量想要输入。 – Devoid 2011-05-05 20:43:16
你要么需要通过它们作为单一,引用参数(如:'./program“命令ARG ARG”“命令2 ARG ARG”'),然后分析每个字符串,或拿出一个分隔符,让你知道当一个命令/ ARG设置完成(通过'argv'迭代) – 2011-05-05 20:57:08
其实......你可能* *能够与getopt的()来做到这一点,它已经有一段时间...寻找 – 2011-05-05 21:01:36