->运行 使用 execv 的 wc 命令
->Running wc command using execv
我正在尝试创建一个简单的函数来计算文本文件中的行数并使用 Unix 命令 wc
(字数统计)打印它。我不明白为什么它不起作用;我为 wc
位置尝试了不同的路径,但没有任何效果。
相反,我收到此错误:
�%r : No such file or directory
我想使用 wc
命令。
代码:
void count_lines() {
int p;
p=fork();
if(p == 0) {
char* args[] = {"./wc","1.txt",NULL};
execv("./wc",args);
perror(execv);
exit(0);
}
printf("waiting for child\n");
wait(NULL);
}
除非您的当前目录中有二进制文件,否则 ./wc
将不起作用。由于要使用 wc
命令,请使用它的路径:
int p;
p=fork();
if(p == 0) {
char* args[] = {"wc","1.txt",NULL};
execv("/usr/bin/wc",args);
perror("execv");
exit(0);
}
或者您可以使用 execvp
让它在 PATH
中搜索 wc
:
int p;
p=fork();
if(p == 0) {
char* args[] = {"wc","1.txt",NULL};
execvp("wc",args);
perror("execvp");
exit(0);
}
您需要更正以下两行代码。始终提供文件位置的完整路径。如果命令执行不成功,您需要检查文件位置的访问权限,包括执行文件或命令的权限:-
char* args[]={"wc","-l","/full/path/1.txt",NULL};
execv("/usr/bin/wc",args);
通常所有 unix/Linux 命令都应该在目录位置 /usr/bin/
中。要获取命令的完整路径,请尝试如下所示:-
which command #here command can be wc, ls etc. so try which wc
我正在尝试创建一个简单的函数来计算文本文件中的行数并使用 Unix 命令 wc
(字数统计)打印它。我不明白为什么它不起作用;我为 wc
位置尝试了不同的路径,但没有任何效果。
相反,我收到此错误:
�%r : No such file or directory
我想使用 wc
命令。
代码:
void count_lines() {
int p;
p=fork();
if(p == 0) {
char* args[] = {"./wc","1.txt",NULL};
execv("./wc",args);
perror(execv);
exit(0);
}
printf("waiting for child\n");
wait(NULL);
}
除非您的当前目录中有二进制文件,否则 ./wc
将不起作用。由于要使用 wc
命令,请使用它的路径:
int p;
p=fork();
if(p == 0) {
char* args[] = {"wc","1.txt",NULL};
execv("/usr/bin/wc",args);
perror("execv");
exit(0);
}
或者您可以使用 execvp
让它在 PATH
中搜索 wc
:
int p;
p=fork();
if(p == 0) {
char* args[] = {"wc","1.txt",NULL};
execvp("wc",args);
perror("execvp");
exit(0);
}
您需要更正以下两行代码。始终提供文件位置的完整路径。如果命令执行不成功,您需要检查文件位置的访问权限,包括执行文件或命令的权限:-
char* args[]={"wc","-l","/full/path/1.txt",NULL};
execv("/usr/bin/wc",args);
通常所有 unix/Linux 命令都应该在目录位置 /usr/bin/
中。要获取命令的完整路径,请尝试如下所示:-
which command #here command can be wc, ls etc. so try which wc