我在使用PHP exec()函数时遇到了困难.似乎没有调用某些功能.例如,代码不echo exec('ls');产生任何输出(它应该,目录中有文件).这对我来说是一个问题的主要原因是我正在尝试从PHP exec()调用执行.jar.
据我所知,我正在调用java程序,但我没有得到任何输出..jar可以从服务器上的命令行执行.(为了记录,它是一个apache服务器).
我的.jar执行的php看起来像这样:
$output = array();
exec('java -jar testJava.jar', $output);
print_r($output);
Run Code Online (Sandbox Code Playgroud)
我从这个exec()调用得到的所有输出都是Array().
我已成功执行exec()'whoami'和'pwd'.我无法弄清楚为什么有些功能正在运行而有些功能不正常.我也不是PHP最有经验的人,所以我不太清楚如何诊断这个问题.任何和所有的帮助将不胜感激.
我正在尝试从Java程序运行外部程序,我遇到了麻烦.基本上我想做的就是:
Runtime.getRuntime().exec("./extprogram <fileIn >fileOut");
Run Code Online (Sandbox Code Playgroud)
但是我发现这不起作用--Java表达式需要使用Process输入和输出流以及其他我没有遇到过的东西.
我已经看过互联网上的一些例子(其中很多来自SO),并且似乎没有一种简单的标准方法可以做到这一点,对于那些不完全了解正在发生的事情的人来说,可能会非常令人沮丧.
我也无法尝试从其他人的代码示例中构建我自己的代码,因为通常看起来大多数其他人1.对重定向不感兴趣stdin,而且2.不一定重定向stdout到文件,而是System.out.
所以,会有人能够指出我的任何好的简单的代码模板的方向调用外部程序和重定向stdin和stdout?谢谢.
这是我应该知道的,但是我在上面写了一个空白,并且在尝试用谷歌找到答案时遇到了惊人的困难.
我正在尝试扩展Java Collection,特别是ConcurrentHashMap.我想创建自己的哈希映射类,以便与非泛型键/值对一起使用,特别是使用我自己的类.
所以我已经定义了这样的类:
public class hashMap extends ConcurrentHashMap<class1, class2>
Run Code Online (Sandbox Code Playgroud)
问题是我忘记了如何正确编写构造函数,以便它们是非泛型的.例如,对于原始concurrentHashMap,您必须调用其构造函数来指定键/值对的类.我想只是简单地能够调用构造函数hashMap(),而无需指定那些泛型.
我试过调用super<class1, class2>();构造函数,但这给了我一个错误.
这似乎应该是非常简单的事情,我很肯定我曾经知道如何做到这一点,但它已经有一段时间了,就像我说的那样,我正在画一个空白.
谢谢.
我目前正在开发一个PHP UI,它收集信息,解析它,将其发送到另一个程序,收集输出并将其呈现给用户.
通常它工作得很好.然而,有时候,另一个程序可能需要永远完成(在2到15个小时之间,我让它一夜之间运行,它在早上完成).我想实现一个KILL按钮,允许用户取消该程序,因为它不仅需要永远完成,而且会捆绑服务器并阻止用户在此期间做任何其他事情.
它当前设置的方式如下:page1.php收集所有用户输入.page2.php检查用户输入.如果不好,则会输出错误.如果输入正常,它会解析它并通过系统调用将其发送到其他程序.当这种情况发生时,屏幕上会出现"计算..."gif.程序完成后,输出将显示在页面上.
最好我希望kill按钮与计算gif同时出现(并且只在同一时间出现),我希望它能够杀死进程(并且输出反映了进程是杀死).
到目前为止,我已经能够按钮出现在我想要的时间和地点.但是,我无法获得我正在寻找的实际杀戮功能.目前我已将其设置为使用带有javascript函数的html按钮创建按钮,该函数在单击时执行.该javascript函数包含一个系统调用的php代码,它找到目标进程并杀死它们(我知道系统调用正常,因为我可以在终端窗口使用它并且它工作得很好).
这是相关的代码:
startload("calculating");
$opt->run_optimization($output);
stopload("calculating");
Run Code Online (Sandbox Code Playgroud)
这会打开计算gif和kill按钮,然后运行一个使系统调用的函数,然后删除计算gif和kill按钮.
system("./optimi/optimi < $infile > $outfile");
Run Code Online (Sandbox Code Playgroud)
这是对其他程序(optimi)的系统调用.
print <<< KILLBUTTON
<br/>
<button type="button" onclick="kill();">Kill</button>
<br/>
<script type="text/javascript">
function kill(){
<?php
system("ps -Af | grep optimi | grep -v grep | awk '{print $2}' | xargs sudo kill");
?>
}
</script>
KILLBUTTON;
Run Code Online (Sandbox Code Playgroud)
这是我的杀戮按钮,现在似乎什么也没做.
我应该指出,重写optimi程序是我想不惜一切代价避免的,考虑到我不是编写它的人,也不是我对编写它的编程语言的经验.
谢谢.
所以从我对Java的理解,当你写作
return value;
Run Code Online (Sandbox Code Playgroud)
它实际上可能会返回两个内容之一:"值"的值,或"值"的引用,具体取决于"值"的类型.据我所知,如果'value'是原始数据类型,则Java返回'value'的值,如果'value'是抽象数据类型,如类,则Java返回对'value'的引用.
现在,我很好奇的是使用枚举返回的行为.如果'variable'的类型为enum,是否返回值或引用?
我遇到了(我怀疑的)舍入错误.
我有一个字符串,0.686357E-01我正在尝试将其转换为double.我已经能够使用该Pattern.split()函数将其拆分,并且我正在捕获基数和指数值.但是,一旦我尝试将它们恰当地相乘,我就会得到这样的结果:0.06863570000000001.
这是我的相关代码:
pattern = Pattern.compile("E\\+?");
String[] number = pattern.split(string);
double base = Double.parseDouble(number[0]);
int exponent = Integer.parseInt(number[1]);
number= base*Math.pow(10, exponent);
Run Code Online (Sandbox Code Playgroud)
那么,我该如何避免舍入误差呢?(有很多方法可以解决它,但是如果可以的话,我想知道如何解决这个问题)
谢谢.