运行C++;来自ruby的程序 如何从Ruby脚本运行C++程序?< /P> 假设Ruby脚本生成一个名为“Hello .txt”的文件,我想运行一个C++程序来获取Helo.txt文件,并使用它并编写另一个文件,名为“Realth.txt”,Ruby脚本继续读取Realth.txt文件。

运行C++;来自ruby的程序 如何从Ruby脚本运行C++程序?< /P> 假设Ruby脚本生成一个名为“Hello .txt”的文件,我想运行一个C++程序来获取Helo.txt文件,并使用它并编写另一个文件,名为“Realth.txt”,Ruby脚本继续读取Realth.txt文件。,c++,ruby-on-rails,ruby,shell,C++,Ruby On Rails,Ruby,Shell,例如,在Linux shell中,我编写了g++hello.c-c hello-o hello来接收“result.txt”文件 有没有办法从Ruby程序运行shell代码 您可以使用: 您可以使用: 您可以像其他人所说的那样使用系统,但是您还应该检查退出值以验证成功或失败 r = system("g++ hello.c -c hello -o hello") #=> r = true if success, nil if failed 您可以像其他人所说的那样使用系统,但是您还应该检查

例如,在Linux shell中,我编写了
g++hello.c-c hello-o hello
来接收“result.txt”文件

有没有办法从Ruby程序运行shell代码

您可以使用:

您可以使用:


您可以像其他人所说的那样使用
系统
,但是您还应该检查退出值以验证成功或失败

r = system("g++ hello.c -c hello -o hello") #=> r = true if success, nil if failed

您可以像其他人所说的那样使用
系统
,但是您还应该检查退出值以验证成功或失败

r = system("g++ hello.c -c hello -o hello") #=> r = true if success, nil if failed
我发现它们比
系统
更简洁

你可以通过以下方式触发C++程序:

`./hello file.txt`
能否澄清是否需要从当前目录中读取results.txt

如果是这样,您可以使用类似于
contents=IO::readlines./results.txt'
的东西,我发现这比
系统
更简洁

你可以通过以下方式触发C++程序:

`./hello file.txt`
能否澄清是否需要从当前目录中读取results.txt


<如果>如此,您可以使用一些类似于“代码>内容= IO::Realthay./Trime.txt”/Cux>< /P>示例命令,编译C++文件(下次使用CCPP作为一个扩展,以确保其健全性),而不是运行它,这将在以后使用$/Hello(ARGS] 实现。您的示例命令是编译C++文件(请下次使用.cpp作为sanity的扩展)并且不要运行它,这将在以后使用
$。/hello[ARGS]实现
。行为不同于;第一个从子应用程序返回STDOUT的结果,而
系统
返回被调用代码的状态。它们不可互换,因为它们的行为不同。我同意,但他没有说他正在检查响应代码。我建议取消勾号,因为他可以得到结果。txt从C++程序中明确地返回到STDUT,而不是写入文件(可以说是更多的UNIX类),这将在这里很好地工作(避免触摸磁盘,然后在读取之后)。在考虑不同的方法时没有伤害:-我应该在事后可能详细地阐述更多!那么使用or会更有意义。如果捕获STDERR可能是一个问题,那么这两种方法的
3
变体非常有用。感谢分享!我学到了一些新的东西,在下一次进行开发时会记住这些(尽管通常我只是为这类任务生成一个本机扩展模块,因为我现在已经习惯了样板文件);第一个返回子应用程序的STDOUT结果,而
system
返回被调用代码的状态。它们不能互换,因为它们的行为不同。我同意,但他没有说他正在检查响应代码。我建议回退,因为他可以得到结果。TXT明确地从C++程序返回到STDUT,而不是写入文件(可以说是更多的UNIX类),这将在这里工作得很好(避免触摸磁盘,然后再读取)。考虑另一种方法没有坏处:-)事后看来,我可能应该详细阐述一下!那么使用or会更有意义。如果捕获STDERR可能是一个问题,那么这两种方法的
3
变体非常有用。感谢分享!我学到了一些新的东西,在下一次进行开发时会记住这些(尽管通常我只是为这类任务生成一个本机扩展模块,因为我现在已经习惯了样板文件)