如何用Java编写将执行另一个程序的程序?此外,该程序的输入应该从我们的程序中提供,该程序的输出应该写入文件.
这是我获取输出的一小部分代码:
Process p = Runtime.getRuntime().exec("C:\\j2sdk1.4.0\bin\\helloworld.java");
BufferedReader input =
new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null)
System.out.println(line);
input.close();
Run Code Online (Sandbox Code Playgroud)
这是我的一组代码,但这会抛出一个IOException.
我有两个TSQL EXEC语句
EXECUTE (N'MyDynamicallyGeneratedStoredProcedure') -- return 0 on success
SELECT @errCode = @@ERROR ;
IF (@errCode = 0)
BEGIN
EXEC 'A Sql Statement using ##temptable created from first', @returnValue
END
Run Code Online (Sandbox Code Playgroud)
如何使两个EXEC同步?; 现在第二个EXEC不等待第一个EXECUTE完成.我尝试发出WaitFor Delay,它等待,但第二个EXEC语句永远不会退回.
谢谢.
更新,这里有更多信息:
现在第二个EXEC,抱怨没有找到Global Temp表.
更新2,发现问题(和它我!)
GBN(和其他人)在答案上都是空白.EXEC是同步的.问题?我对问题本身的理解..我曾经提到过
应该是:
1(a)EXECUTE(N'CreateMyDynamicStoredProcedure') - 成功时返回0
1(b)EXECUTE(N'MyDynamicStoredProcedure') - 成功返回0
我错过了1(b)实际上在其他地方执行并且在步骤(2)之后执行.
(我应该去过生活!)
我目前在我的Ant构建脚本中有这个:
<exec dir="${basedir}" executable="perl">
<arg line="${basedir}/version.pl -major"/>
</exec>
Run Code Online (Sandbox Code Playgroud)
但是,当它运行时,我收到此错误消息:
[exec]无法打开-major
[exec]结果:2
对我来说,我说我所拥有的是试图运行一个名为-major的文件,该文件不存在.该文件是version.pl,它带有-major参数.
如何更改此操作以使用参数-major运行version.pl?
请注意,我在Solaris计算机上运行ant脚本,但是对于后代,欢迎跨平台或其他操作系统的解决方案.
目前我有这个代码,它从包含类似内容的文件中读取[{'1': {'Score': '2', 'Class': '3'}}]并将其分配给变量:
exec('assigns = ' + open(r'D:\Dropbox\Dev\Output\dict', 'r').read())
Run Code Online (Sandbox Code Playgroud)
但是,我被告知使用exec是危险的.如何在不使用的情况下编写相同的代码exec?
我需要编写ant脚本来在linux中执行一个文件,但在执行文件之前我需要执行setup文件.
在putty我习惯了类似"./setup"然后"./executeme"的东西
以同样的方式我写了蚂蚁脚本作为
<exec dir="${dir}" executable="/bin/sh">
<arg value=". ./setup"/>
<arg value="./executeme"/>
</exec>
Run Code Online (Sandbox Code Playgroud)
但它给出错误为"/ bin/sh:../ setup:没有这样的文件或目录".
还有人可以解释我执行"./setup"和"./setup"之间的区别吗?
提前致谢.
想要使用ant替换macOS上txt文件中的值。我使用了以下代码,但出现错误:“该类型不支持嵌套文本数据(“”)“。
<exec executable="sed">
<arg value="s/old/new/g" />
<arg value="$MY_FILE" />
</exec>.
Run Code Online (Sandbox Code Playgroud)
如何替换变量的值,我在Windows上用replace替换了文件,就可以了。
在execl变体中使用下面的代码ls,但是ls -l不起作用,但是在我的execvp方法ls和ls-l工作中.我采用这种execl方法的原因是因为二进制文件的路径可能不同而execvp没有提供给我这个功能.理想情况下,我execl也想继续努力ls -l,但现在它不起作用ls -l.我试过阅读手册页,但没有帮助.
void child(int argc, char *argv[MAX_ARGS])
{
execvp(argv[0], argv);
}
void child(char *argv[], char* path)
{
execl(path, argv, NULL);
}
Run Code Online (Sandbox Code Playgroud) 我目前正在努力解决这个错误.我正在编写一个shell模拟器,使用fork()来执行使用execvp();的命令.几乎我尝试解析到我的shell的每个命令都工作得很好,除了没有参数的ls.如果我尝试执行ls -lah,一切正常,但是一个简单的ls不会,收到以下错误:
ls: fts_open: No such file or directory
Run Code Online (Sandbox Code Playgroud)
这是我的代码片段:(只是必不可少的)
pid = fork();
if (pid==0)
{
puts("CHILD");
puts(args[0]);
puts(args[1]);
printf("%d\n", strlen(args[1]));
args[2] = NULL;
execvp(args[0], args);
}
else wait(NULL);
puts("BACK TO PARENT");
}
Run Code Online (Sandbox Code Playgroud)
这是ls的输出:
ls
CHILD
ls
0
ls: fts_open: No such file or directory
BACK TO PARENT
Run Code Online (Sandbox Code Playgroud)
如你所见,args [0]包含ls,args [1]为空,因为没有参数,args [1]的长度为0,但我不断收到错误.
有什么想法吗?
编辑:
感谢Jonathan Leffler找到它:(同样,它似乎只是Mac上的一个问题)
关键是args [1]实际上并不是空的,因此,操作系统会尝试打开''文件,显然,该文件不存在,并且看起来不能创建,因为它不是真是个名字.
所以,这就是我所做的:检查args的len [1].如果为0,则将其设置为NULL.(只是释放内存并没有真正帮助)
pid = fork();
if (pid==0)
{
puts("CHILD");
puts(args[0]);
puts(args[1]);
if (strlen(args[1]) == 0)
args[1] = 0;
args[2] = NULL;
execvp(args[0], …Run Code Online (Sandbox Code Playgroud) 我试过跟随Go Docs来调用一个只从GO输出"Hello"的python脚本,但直到现在才失败.
exec.Command("script.py")
Run Code Online (Sandbox Code Playgroud)
或者我也试过调用一个简单调用python脚本的shell脚本,但也失败了:
exec.Command("job.sh")
Run Code Online (Sandbox Code Playgroud)
任何想法我将如何实现这一目标?
编辑
我按照评论中的建议解决了问题,并添加了exec.Command()的完整路径.
我正在扫描文件夹中的音频文件,并将它们转换为mp3。在RUBY中效果很好。但是,完成第一个转码后,它将停止整个循环
这是我的代码处理的分解。
def scanFolder
# lots of code above to get folder list, check for incorrect files etc..
audioFileList.each {
|getFile|
exec_command = "ffmpeg #{getFile} #{newFileName}"
exec exec_command
}
end
Run Code Online (Sandbox Code Playgroud)
发生的事情是,它将对找到的第一个文件进行代码转换,然后停止整个功能。有办法强迫它继续吗?
ffmpeg目前确实可以正常运行并完成,因此它没有破坏任何内容