我有一个程序可以从文本文件中逐行读取。每行都有布局
([{lemma:/([a-zA-Z]{2,}_)?[a-zA-Z]{2,}[0-9]{2,}/}]
,我已经读完它,所以我有2个数组,其中1个数组包含字符串,另一个数组指向每个字符串值。例如
command arg1 arg2 arg3
等等:
char read_in_line[128]
char* command[100]
等
然后我将此命令数组作为使用fork和pipe的函数的输入。以下是此函数的代码段,请注意,它处于while循环中,当* cmd!= NULL时将继续运行
command[0] = command arg1 arg2 arg3
command[1] = command arg1
但是,这不会返回任何内容。我的C程序编译时没有显示任何错误,但是在我的stdout中,我看不到发送到函数中的任何命令的执行。
编辑:
void piping(char* cmd[100]{
else if(pid == 0){
//child does not need to read
close(thepipe[0]);
dup2(thepipe[1],1);
close(thepipe[1]);
execlp(*cmd,*cmd,NULL);
答案 0 :(得分:0)
以下程序按预期工作:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/wait.h>
int main(void)
{
int rc;
rc=execlp("/bin/date", "deet", (char*) NULL);
printf("Rc=%d,%d(%s)\n", rc, errno, strerror(errno));
return 0;
}
下一步:添加一些参数。 (下一步:修复管道)
rc=execlp("/bin/ls", "ls", "-li", (char*) NULL);