在UNIX中使用管道更改目录

时间:2011-01-17 22:02:14

标签: unix pipe

我正在编写一个C程序,基本上应该更改目录并调用另一个程序。我试过了:

system("cd ... | ./test.exe");

但它似乎不起作用。

5 个答案:

答案 0 :(得分:2)

当然,你想做:

cd /this/is/a/dir && ./command

答案 1 :(得分:1)

尝试:

system("cd ... ; ./test.exe");

(我假设...是您目录的占位符。)

如果这不起作用,请考虑创建一个短脚本(称之为script.sh):

#!/bin/sh
cd ...
./test.exe

然后执行

system("./script.sh");

答案 2 :(得分:1)

我将忽略system函数的使用,并回答好像在命令行输入管道命令一样,为了说明这一点:

当您创建像cd somedir | ./test.exe这样的管道时,允许shell在单独的子shell环境中运行管道的每个命令。此外,无法保证它们将以严格的从左到右的顺序执行。因此cd命令不会以您期望的方式影响test.exe的环境。作为shell内置的cd只能影响它执行的shell的环境,在这种情况下,它将是作为设置管道的一部分创建的子shell,而不是输入管道命令的shell

答案 3 :(得分:0)

“cd”无法使用管道。尝试类似:

chdir("/path");
system("./test.exe");

答案 4 :(得分:0)

我用

system("cd .. && ./test.exe");