私はコマンドを求めるプロンプトを出そうとしていますが、execを使ってそのコマンドを実行しようとしています。unixのユーザ入力でCでexecvp()を使用しようとしています
例えば、彼らが私に "ls -la"を与えた場合、私はそのコマンドを実行する必要があります。私は、次のコードを試してみた:
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main()
{
int ret, num_args;
printf("Enter number of arguments (Example: \"ls -la\" has 1 argument): ");
scanf("%d", &num_args);
char *cmd[num_args];
printf("Enter command name: ");
scanf("%s", &cmd[0]);
int i;
for (i = 0; i < num_args; i++)
{
printf("Enter parameter: ");
scanf("%s", &cmd[i]);
}
execvp(cmd[0], cmd);
}
しかし、私はそれが私に「セグメンテーション違反」
$ ./a.out
Enter number of arguments (Example: "ls -la" has 1 argument): 2
Enter command name: ls
Enter parameter: -la
Enter parameter: .
Segmentation fault
$
任意のアイデアを与えた次の実行をしようとしたとき?
コンパイラはgetlineが何であるか分からないようですが、これは#include行がないか、コンパイラ自体のためですか? –
'getline'はCのGNU関数です:http://www.gnu.org/s/libc/manual/html_node/Line-Input.html –
コンパイラとは何ですか? –