gpt4 book ai didi

c - Execlp 函数无法找到二进制文件

转载 作者:行者123 更新时间:2023-11-30 16:23:56 29 4
gpt4 key购买 nike

我正在做一个涉及管道和执行的简单作业,这是代码。

#include <apue.h>
#include <stdio.h>

int main(void){
int out[2];
pipe(out);
char file1[1024],file2[1024];
int pid=fork();
if(pid>0){
close(out[0]);
scanf("%s",file1);
scanf("%s",file2);
write(out[1],file1,strlen(file1));
//write(out[1],"\0",1);
write(out[1],file2,strlen(file2));
}
if(pid==0){
int c;
int cnt=0;
close(out[1]);
read(out[0],file1,1024);
read(out[0],file2,1024);

execlp("sort","sort",file1,NULL);

return 0;
}
}

问题是,execlp 函数找不到排序二进制文件,
我还使用了 execl 给它完整的路径,但它不起作用。
它给了我错误“排序:没有这样的文件或目录”Exec从来没有给我这个问题,这是什么?

最佳答案

两个write()的内容不会被分开;读者只需将它们作为一个 block 来读取,并将两个字符串连接起来:

<小时/>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>

int main(void){
int out[2];
pipe(out);
char file1[1024],file2[1024];
int pid=fork();
if(pid>0){
close(out[0]);
scanf(" %s",file1);
scanf(" %s",file2);
write(out[1],file1,strlen(file1));
//write(out[1],"\0",1);
write(out[1],file2,strlen(file2));
}
if(pid==0){
int cnt=0;
close(out[1]);
cnt=read(out[0],file1,1024);
file1[cnt]=0;
cnt = read(out[0],file2,1024);
file2[cnt]=0;

fprintf(stderr, "about to execlp(sort|%s|%s|NULL)\n",file1,file2);
execlp("sort","sort",file1,NULL);

return 0;
}
return 0;
}
<小时/>

./a.out

输入是:wtf omg

输出:

<小时/>
plasser@pisbak$ ./a.out
wtf omg
about to execlp(sort|wtfomg||NULL)
plasser@pisbak$ sort: cannot read: wtfomg: No such file or director
<小时/>

因此,消息不是关于未找到二进制文件,但是sort无法找到文件 wtfomg 作为参数传递。

关于c - Execlp 函数无法找到二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53793805/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com