c - 重定向 execvp 路径

标签 c system system-calls sys

我正在尝试编写一个简单的代码,该代码从输入文件的子文件夹中执行程序并将结果打印到输出文件中。

我的问题是,当我执行程序时,它总是失败。因为 execvp 命令试图在错误的位置查找名为“a.out”的 exe。 in(桌面而不是搜索正确的路径地址)。

这是代码。请帮帮我 :)

pid_t   runner;
char enter[] = "/home/demo/Desktop/OS/Ex1/Ex12/code/input.txt"; // input file
char path[] = "/home/demo/Desktop/OS/Ex1/Ex12/Ex1/ronen/"; correct path
char *r [] = {"./a.out", NULL}; 
int savedFD = dup(0);
int sever2Fd=dup(1);
int fdin = open(enter,O_RDONLY);
int fdout = open ("output.txt", O_CREAT | O_RDWR, 0466);
dup2(fdin,  0);
dup2(fdout, 1);
if ((runner = fork()) < 0) {perror("could not make fork");}
else if (runner == 0) {
    if (execvp(r[0],r) < 0 ) {printf("Failed!\n");}
} else if (runner != 0) {
    waitpid(runner,0,0);
    dup2(savedFD, 0);
    dup2(sever2Fd, 1);
    printf("done\n");
}
close(fdin);close(fdout);

最佳答案

答案很简单。

“chdir(通缉路径)” int dirchange = chdir(argv[1]);

关于c - 重定向 execvp 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29393139/

相关文章:

process - 系统调用开销

c - 表示多维数组或多指针的结尾

windows - 是否可以将终止进程所需的所有信息保存到磁盘,然后重新启动它?

shell - 系统调用、shell 命令和程序

mysql - SQL推荐系统

c - 从第一个字符串中的第二个字符串中删除所有出现的所有字符

C - 我应该每次都指定安装类型吗?

c - LD_LIBRARY_PATH 被 GCC 忽略

c - 枚举 hack 在 C 中有效吗?如果是这样,它应该在 VisualStudio 2003 中工作吗?

c - 尽管文件非空,但读取到缓冲区的内容为空